#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;
typedef vector<vector<int> > vvi;
typedef vector<ll> vll;
typedef complex<double> cd;

#define forn(i, n) for (int (i) = 0; (i) != (n); (i)++)
#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()
#define popcount(x) __builtin_popcount(x)
#define popcountll(x) __builtin_popcountll(x)
#define fi first
#define se second
#define re return
#define pb push_back
#define uniq(x) sort(all(x)); (x).resize(unique(all(x)) - (x).begin())

#ifdef LOCAL
#define dbg(x) cerr << __LINE__ << " " << #x << " " << x << endl
#define ln cerr << __LINE__ << endl
#else
#define dbg(x) void(0)
#define ln void(0)
#endif // LOCAL

const int N = 200000;

long long a[N];

struct q{
    char c;
    int i, j, k;
};

vector<q> p;

const int DEG2 = 10;

void printer()
{
    cout << p.size() << "\n";
    for (int i = 0; i < p.size(); i++)
    {
        cout << p[i].c << " " << p[i].i << " " << p[i].j << " " << p[i].k << "\n";
    }
}

void simulator()
{
    int A, B;
    cin >> A >> B;
    a[0] = A, a[1] = B;
    for (int i = 0; i < p.size(); i++)
    {
        if (p[i].c == '+')
        {
            a[p[i].k] = a[p[i].i] + a[p[i].j];
        }
        if (p[i].c == '<')
        {
            a[p[i].k] = a[p[i].i] < a[p[i].j];
        }
    }
    for (int i = 0; i < N; i++) if (a[i] != 0)
    {
        cout << i << " " << a[i] << "\n";
    }
}

void dif(int pos_a, int pos_b, int res)
{
    p.push_back({'<', N - 1, N - 2, res});
    p.push_back({'+', DEG2 + 0, pos_a, N - 3});
    for (int j = 30; j >= 0; j--)
    {
        p.push_back({'<', N - 1, N - 2, 3});
        p.push_back({'+', res, DEG2 + j, 3});
        p.push_back({'+', 3, pos_b, 3});
        p.push_back({'<', 3, N - 3, 3});
        for (int r = 0; r < j; r++)
            p.push_back({'+', 3, 3, 3});
        p.push_back({'+', 3, res, res});
    }
}

const int stA = 100, stB = 200;

signed main()
{
    p.push_back({'+', 0, 1, 3});
    p.push_back({'<', DEG2, 3, DEG2});
    for (int j = 1; j < 60; j++) p.push_back({'+', DEG2 + j - 1, DEG2 + j - 1, DEG2 + j});


    for (int i = 30; i >= 0; i--)
    {
        dif(DEG2 + i, DEG2 + 0, 4);
        dif(0, 4, 5);
        p.push_back({'<', N - 1, 5, 5});
        p.push_back({'+', stA + i, 5, stA + i});
        for (int j = 0; j < i; j++) p.push_back({'+', 5, 5, 5});
        dif(0, 5, 6);
        p.push_back({'+', N - 1, 6, 0});
    }

    for (int i = 30; i >= 0; i--)
    {
        dif(DEG2 + i, DEG2 + 0, 4);
        dif(1, 4, 5);
        p.push_back({'<', N - 1, 5, 5});
        p.push_back({'+', stB + i, 5, stB + i});
        for (int j = 0; j < i; j++) p.push_back({'+', 5, 5, 5});
        dif(1, 5, 6);
        p.push_back({'+', N - 1, 6, 1});
    }

    for (int i = 30; i >= 0; i--)
    {
        for (int j = 30; j >= 0; j--)
        {
            p.push_back({'+', stA + i, stB + j, 3});
            p.push_back({'<', DEG2 + 0, 3, 3});
            for (int z = 0; z < i + j; z++) p.push_back({'+', 3, 3, 3});
            p.push_back({'+', 2, 3, 2});
        }
    }

    printer();
    //simulator();
}

/* Note:
Check constants at the beginning of the code.
    N is set to 4e5 but be careful in problems with large constant factor.
    Setting N in every problem is more effective.
Check corner cases.
    N = 1
No def int long long for now.
Add something here.
*/


Measured memory_bytes: 7228