#include <algorithm>
#include <bitset>
#include <cassert>
#include <chrono>
#include <climits>
#include <cmath>
#include <complex>
#include <cstring>
#include <deque>
#include <functional>
#include <iostream>
#include <iomanip>
#include <list>
#include <map>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <stack>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#include <cstdint>
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef pair<int,int> pii;
#define MP make_pair
#define PB push_back
#define inf 1000000007
#define rep(i,n) for(int i = 0; i < (int)(n); ++i)
#define all(x) (x).begin(),(x).end()

template<typename A, size_t N, typename T>
void Fill(A (&array)[N], const T &val){
    std::fill( (T*)array, (T*)(array+N), val );
}
 
template<class T> inline bool chmax(T &a, T b){
    if(a<b){
        a = b;
        return true;
    }
    return false;
}

template<class T> inline bool chmin(T &a, T b){
    if(a>b){
        a = b;
        return true;
    }
    return false;
}
int A = 0;
int B = 1;
int ans = 2;
int Aroot = 100;
int Broot = 200;

int counter = 30000;
int one = 10000;
int zero = 20000;
int tmp = 1000;
int tmp2 = 2000;


void hikaku(int a,int b, int c){ // a<b nara c = 1
    cout << "< " << a << " " << b << " " << c << "\n";

}
void Plus(int a,int b,int c){
    cout << "+ " << a << " " << b << " " << c << "\n";
}

void clear(int id){
    cout << "< 40000 40001 " << id << "\n";
}
void increment(int id){
    cout << "+ " << id << " " << one << " "  << id << "\n";
}
void NOT(int id){
    hikaku(id,one,id);
}
void init(){
    cout << "+ 0 1 10000\n";
    cout << "< 20000 10000 10000\n";
    rep(i,30){
        Plus(one+i,one+i,one+i+1);        
    }
    for(int i=29;i>=0;i--){
        clear(tmp);
        clear(tmp2);
        Plus(counter,one+i,tmp);
        hikaku(A,tmp,tmp2);
        NOT(tmp2);
        Plus(tmp2,zero,Aroot+i);
        rep(k,i){
            Plus(tmp2,tmp2,tmp2);
        }
        Plus(counter,tmp2,counter);

    }
    clear(counter);
        
    for(int i=29;i>=0;i--){
        clear(tmp);
        clear(tmp2);
        Plus(counter,one+i,tmp);
        hikaku(B,tmp,tmp2);
        NOT(tmp2);
        Plus(tmp2,zero,Broot+i);
        rep(k,i){
            Plus(tmp2,tmp2,tmp2);
        }
        Plus(counter,tmp2,counter);

    }
    clear(counter);
    rep(i,30){
        clear(tmp);
        clear(tmp2);
        hikaku(Aroot+i,one,tmp2);// tmp2 にnotが入った
        rep(j,30){
            hikaku(tmp2,Broot+j,tmp);
            for(int k=0;k<i+j;k++){
                Plus(tmp,tmp,tmp);
            }
            Plus(ans,tmp,ans);
        }
    }
}

ll s[200000];
int main(){
    cout << 29314 << "\n";
    init();
    // ll x,y;
    // cin >> x >> y;
    // s[0] = x;
    // s[1] = y;
    // int n;
    // cin >> n;
    // rep(i,n){
    //     char ch;
    //     int a,b,c;
    //     cin >> ch >> a >> b >> c;
    //     if(ch=='+'){
    //         s[c] = s[a]+s[b];
    //     }else if(ch=='<'){
    //         s[c] = s[a]<s[b];
    //     }
    // }
    // rep(i,30){
    //     cerr << s[A+i] << " ";
    // }
    // cerr << endl;
    
    // rep(i,30){
    //     cerr << s[B+i] << " ";
    // }
    // cerr << endl;
    // cout << s[2] << endl;
    return 0;
}

Measured memory_bytes: 3116