#if 1
#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#endif
#include <iostream>
#include <vector>
#include <list>
#include <queue>
#include <unordered_map>
#define MAX_N 15;
#define ll long long
using namespace std;
const int LM = 20;
const ll INF = 12345678910ll;
int N, ans;
char op(LM);
void output()
{
int i;
ans++;
if (ans > 20) return;
printf("1 ");
for (i = 2; i <= N; i++)
{
printf("%c %d ", op(i), i);
}
puts("");
}
inline ll m_abs(ll k) { return k < 0 ? -k : k; }
void dfs(int step, ll a, ll b)
{
//pruning
if (m_abs(a) >= INF || m_abs(b) >= INF ) return;
// Base Condition - pruning or Backtrcking
if (step > N)
{
if (a + b == 0) {
output();
}
return;
}
// Normal Condition
int newValue = step, deci = 10;
op(step) = '+';
dfs(step + 1, a + b, newValue);
op(step) = '-';
dfs(step + 1, a + b, -newValue);
op(step) = '.';
if (step > 9) deci = 100;
if (b < 0) newValue = -newValue;
dfs(step + 1, a, b * deci + newValue);
}
int main(void)
{
/*ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);*/
#ifdef _WIN64
freopen("input.txt", "r", stdin);
#endif // _WIN32
scanf("%d\n", &N);
dfs(2, 0, 1);
printf("%d\n", ans);
}
#endif