#include <bits/stdc++.h>
using namespace std;using ll=long long;using uint=unsigned int;using pii=pair<int,int>;using pll=pair<ll,ll>;using ull = unsigned long long;using ld=long double;template<typename T>void _(const char*s,T h){cerr<<s<<" = "<<h<<"\n";}template<typename T,typename...Ts>void _(const char*s,T h,Ts...t){int b=0;while(((b+=*s=='(')-=*s==')')!=0||*s!=',')cerr<<*s++;cerr<<" = "<<h<<",";_(s+1,t...);}// break continue pop_back 998244353
#define int ll
#define pii pll
#define f first
#define s second
#define pb emplace_back
#define forn(i,n) for(int i=0;i<(n);++i)
#define sz(a)((int)(a).size())
#define sqr(x) ((x)*(x))
struct init{init(){cin.tie(0);iostream::sync_with_stdio(0);cout<<fixed<<setprecision(10);cerr<<fixed<<setprecision(5);}~init(){
#ifdef LOCAL
#define dbg(...) _(#__VA_ARGS__,__VA_ARGS__)
cerr<<"Time elapsed: "<<(double)clock()/CLOCKS_PER_SEC<<"s.\n";
#else
#define dbg(...) 
#endif
}}init;template<typename T,typename U>void upx(T&x,U y){if(x<y)x=y;}template<typename T,typename U>void upn(T&x,U y){if(x>y)x=y;}mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());const int D=4,dx[]={+1,0,-1,0},dy[]={0,+1,0,-1};

const int N=2e5+5;
int a[N];
int m=0;
char c[N];int x[N],y[N],z[N];
int f=5;
string nam[N];
void check(int q,int w){
    memset(a,0,sizeof a);
    a[0]=q;
    a[1]=w;
    forn(i,m){
        if(c[i]=='+')a[z[i]]=a[x[i]]+a[y[i]];
        else a[z[i]]=a[x[i]]<a[y[i]];
        assert(a[i]<1e19);
    }
    // forn(i,f)dbg(i,nam[i],a[i]);
    if(a[2]!=q*w){
        dbg(q,w);
    }
    assert(a[2]==q*w);
}
void adop(char cc,int xx,int yy,int zz){
    c[m]=cc;
    x[m]=xx;
    y[m]=yy;
    z[m]=zz;
    m++;
}
// #ifdef LOCAL
// const int P=3;
// #else
const int P=30;
// #endif
int pw[P];
int pwfora[P];
int32_t main(){
    int ans=2;
    adop('+',0,1,3);
    adop('+',3,3,4);

    nam[f]="one";int one=f++;adop('<',3,4,5);//a5=1
    nam[f]="zer";int zer=f++;
    nam[f]="apl1";int apl1=f++;adop('+',0,5,apl1);
    nam[f]="bpl1";int bpl1=f++;adop('+',1,5,bpl1);
    
    nam[f]="";pw[0]=f++;
    adop('<',3,4,pw[0]);
    for(int i=1;i<P;++i){
        pw[i]=f++;
        adop('+',pw[i-1],pw[i-1],pw[i]);
    }
    nam[f]="allb";int allb=f++;
    nam[f]="tmpallb";int tmpallb=f++;
    nam[f]="potoneb";int potoneb=f++;

    nam[f]="alla";int alla=f++;
    nam[f]="tmpalla";int tmpalla=f++;
    nam[f]="potonea";int potonea=f++;

    nam[f]="realpotoneahelp";int realpotoneahelp=f++;
    nam[f]="realpotonea";int realpotonea=f++;
    nam[f]="realalla";int realalla=f++;

    forn(i,P)pwfora[i]=f++;

    for(int p=P-1;p>=0;--p){
        adop('+',allb,pw[p],tmpallb);
        adop('<',tmpallb,bpl1,potoneb);
        adop('+',potoneb,zer,pwfora[0]);
        for(int i=1;i<P;++i)adop('+',pwfora[i-1],pwfora[i-1],pwfora[i]);
        adop('+',zer,zer,alla);
        adop('+',zer,zer,realalla);

        for(int pa=P-1;pa>=0;--pa){
            adop('+',alla,pw[pa],tmpalla);
            adop('<',tmpalla,apl1,potonea);
            adop('+',potonea,potoneb,realpotoneahelp);
            adop('<',one,realpotoneahelp,realpotonea);
            for(int i=0;i<pa;++i){
                adop('+',realpotonea,realpotonea,realpotonea);
                adop('+',potonea,potonea,potonea);
            }
            adop('+',alla,potonea,alla);
            adop('+',realalla,realpotonea,realalla);
        }

        for(int i=0;i<p;++i)adop('+',potoneb,potoneb,potoneb);
        adop('+',allb,potoneb,allb);
        for(int i=0;i<p;++i)
            adop('+',realalla,realalla,realalla);
        adop('+',ans,realalla,ans);

        // check(1,2);
    }
    // check(1,2);
    // for(int i=0;i<=10;++i)for(int j=0;j<=10;++j){
    //     check(i,j);
    // }
    // check(100,300);
    check(1000000000,1000000000);
    // check(999999999,1000000000);
    // check(999999999,999999999);
    cout<<m<<'\n';
    forn(i,m){
        cout<<c[i]<<' ' <<x[i]<<' '<<y[i]<<' '<<z[i]<<'\n';
    }
    return 0;
}


Measured memory_bytes: 12256