#include<bits/stdc++.h>
#define mp make_pair
#define pb push_back
#define pll pair<LL,LL>
#define pii pair<int,int>
#define y second
#define x first
#define LL long long 
#define MEM(x) memset(x,0,sizeof(x))
using namespace std;
int tmp=10000;
int sum=2;
int unit=199999;
vector<tuple<char,int,int,int> > v;
int cnt;
LL reg[1000005];
int getA(int x){
    int tmp=20000+cnt;
    int tmp2=60000+cnt;
    int tmp3=80000+cnt;
    int tmp4=40000+cnt;
    int res=90000+cnt;
    int a=0;
    
    v.pb(make_tuple('+',12333,unit,110));
    reg[110]=reg[12333]+reg[unit];
    for(int i = 111;i<=150;i++){
        v.pb(make_tuple('+',i-1,i-1,i));
        reg[i]=reg[i-1]+reg[i-1];
      //  printf("%d %lld\n",i,reg[i]);
    }
    
    for(int i = 150;i>=109;i--){
        v.pb(make_tuple('+',i,tmp,tmp2));
        reg[tmp2]=reg[i]+reg[tmp];
        v.pb(make_tuple('<',tmp2,a,tmp3));
        reg[tmp3]=reg[tmp2]<reg[a];
        v.pb(make_tuple('+',tmp3,x,tmp4));
        reg[tmp4]=reg[tmp3]+reg[x];
        v.pb(make_tuple('<',unit,tmp4,tmp4));
        reg[tmp4]=reg[unit]<reg[tmp4];
        for(int j = 0;j<i-110;j++){
            v.pb(make_tuple('+',tmp3,tmp3,tmp3));
            reg[tmp3]=reg[tmp3]+reg[tmp3];
            v.pb(make_tuple('+',tmp4,tmp4,tmp4));
            reg[tmp4]=reg[tmp4]+reg[tmp4];
        }
        v.pb(make_tuple('+',tmp,tmp3,tmp));
        reg[tmp]=reg[tmp]+reg[tmp3];
        v.pb(make_tuple('+',res,tmp4,res));
        reg[res]=reg[res]+reg[tmp4];
    }
   // printf("? %lld\n",reg[tmp]);
    cnt++;
    return res;
}
void add(int x,int i,int b){
    int tmp2=50000;
    int tmp3=70000;
    v.pb(make_tuple('+',x,tmp,tmp2));
    reg[tmp2]=reg[x]+reg[tmp];
    v.pb(make_tuple('<',tmp2,b,tmp3));
    reg[tmp3]=reg[tmp2]<reg[b];
   // printf("!%lld\n",reg[tmp3]);
    int A=getA(tmp3);
    for(int j = 0;j<i;j++){
        v.pb(make_tuple('+',tmp3,tmp3,tmp3));
        reg[tmp3]=reg[tmp3]+reg[tmp3];
        v.pb(make_tuple('+',A,A,A));
        reg[A]=reg[A]+reg[A];
    }
    v.pb(make_tuple('+',tmp,tmp3,tmp));
    reg[tmp]=reg[tmp]+reg[tmp3];
    v.pb(make_tuple('+',2,A,2));
    reg[2]=reg[A]+reg[2];
}
int main(){
 //   vector<tuple<char,int,int,int> > v;
  //  scanf("%lld %lld",&reg[0],&reg[1]);
    v.pb(make_tuple('+',0,1,199998));
    //reg[199999]=reg[0]+reg[1];
    v.pb(make_tuple('<',199999,199998,199999));
    //reg[200000]=reg[200000]<reg[199999];
    v.pb(make_tuple('+',12333,unit,10));
    reg[10]=reg[12333]+reg[unit];
    reg[unit]=1;
    for(int i = 11;i<=50;i++){
        v.pb(make_tuple('+',i-1,i-1,i));
        reg[i]=reg[i-1]+reg[i-1];
    }

    for(int i = 50;i>=9;i--){
       // printf("%d\n",v.size());
        add(i,i-10,1);
    }
    fill(reg,reg+1000005,0);
    printf("%d\n",v.size());
  //  printf("%lld\n",reg[2]);
 // scanf("%d %d",&reg[0],&reg[1]);
    for(auto it:v){
        char c;
        int i,j,k;
        tie(c,i,j,k)=it;
        printf("%c %d %d %d\n",c,i,j,k);
     assert(i<200000&&j<200000&&k<200000);
      /*  if(c=='<'){
            reg[k]=reg[i]<reg[j];
        }
        if(c=='+'){
            reg[k]=reg[i]+reg[j];
        }*/
    }
  //  printf("%d\n",reg[2]);
}
/*
100
5
5 4
4 2
4 2 3
5 4 2 3 1
*/

Measured memory_bytes: 12348