#include <bits/stdc++.h>
using namespace std;

using Int = long long;
const char newl = '\n';

template<typename T1,typename T2> inline void chmin(T1 &a,T2 b){if(a>b) a=b;}
template<typename T1,typename T2> inline void chmax(T1 &a,T2 b){if(a<b) a=b;}
template<typename T> void drop(const T &x){cout<<x<<endl;exit(0);}
template<typename T=Int>
vector<T> read(size_t n){
  vector<T> ts(n);
  for(size_t i=0;i<n;i++) cin>>ts[i];
  return ts;
}

const Int A=0,B=1,C=2,Z=2e5-1,O=Z-1,S=Z-2;
vector<Int> mul(30*30);
vector<Int> buf(100);
vector<Int> num(100);
vector<Int> ppp(60);

vector<Int> bit_A(30);
vector<Int> bit_B(30);

//INSERT ABOVE HERE
Int solve(vector<string> seq,Int a,Int b){
  const Int n = 2e5;
  vector<Int> as(n,0);
  as[0]=a;
  as[1]=b;

  for(string s:seq){
    stringstream ss(s);
    char c;
    Int i,j,k;
    ss>>c>>i>>j>>k;
    assert(i<n);
    assert(j<n);
    assert(k<n);
    if(c=='+') as[k]=as[i]+as[j];
    if(c=='<') as[k]=as[i]<as[j];
  }

  // for(Int i=0;i<10;i++) cout<<as[i]<<' ';
  // cout<<endl;

  assert(as[Z]==0);
  if(a+b!=0) assert(as[O]==1);

  for(Int k=1;k<=11;k++){
    // cout<<k<<":"<<as[num[k]]<<endl;
    if(a+b!=0) assert(as[num[k]]==k);
  }

  /*
    cout<<a<<' '<<b<<':'<<as[2]<<endl;
    for(Int i=0;i<10;i++) cout<<as[bit_A[i]];
    cout<<endl;
    for(Int i=0;i<10;i++) cout<<as[bit_B[i]];
    cout<<endl;
  */
  return as[2];
}

string add(Int i,Int j,Int k){
  return "+ "+to_string(i)+" "+to_string(j)+" "+to_string(k);
}
string cmp(Int i,Int j,Int k){
  return "< "+to_string(i)+" "+to_string(j)+" "+to_string(k);
}

vector<string> ans;
void create(Int X,vector<Int> &bit){
  ans.emplace_back(cmp(A,A,buf[0]));
  for(Int i=29;i>=0;i--){
    ans.emplace_back(cmp(A,A,buf[1]));
    ans.emplace_back(cmp(A,A,buf[2]));
    ans.emplace_back(cmp(A,A,buf[3]));
    ans.emplace_back(cmp(A,A,buf[4]));
    for(Int j=0;j<i;j++){
      ans.emplace_back(add(buf[1],ppp[j],buf[1]));
    }
    ans.emplace_back(add(buf[0],buf[1],buf[2]));
    ans.emplace_back(cmp(buf[2],X,buf[4]));

    ans.emplace_back(add(Z,buf[4],bit[i]));

    for(Int j=0;j<i;j++)
      ans.emplace_back(add(buf[4],buf[4],buf[4]));

    ans.emplace_back(add(buf[0],buf[4],buf[0]));
  }
}

signed main(){
  cin.tie(0);
  ios::sync_with_stdio(0);

  Int ptr=3;
  for(Int i=0;i<(Int)mul.size();i++) mul[i]=ptr++;
  for(Int i=0;i<(Int)buf.size();i++) buf[i]=ptr++;
  for(Int i=0;i<(Int)num.size();i++) num[i]=ptr++;
  for(Int i=0;i<(Int)ppp.size();i++) ppp[i]=ptr++;
  for(Int i=0;i<(Int)bit_A.size();i++) bit_A[i]=ptr++;
  for(Int i=0;i<(Int)bit_B.size();i++) bit_B[i]=ptr++;

  ans.emplace_back(add(A,B,S));
  ans.emplace_back(cmp(Z,S,O));

  for(Int k=1;k<(Int)num.size();k++)
    ans.emplace_back(add(num[k-1],O,num[k]));

  ans.emplace_back(cmp(Z,O,ppp[0]));
  for(Int k=1;k<(Int)ppp.size();k++)
    ans.emplace_back(add(ppp[k-1],ppp[k-1],ppp[k]));

  create(A,bit_A);
  create(B,bit_B);

  for(Int x=0;x<30;x++){
    for(Int y=0;y<30;y++){
      ans.emplace_back(cmp(A,A,buf[0]));
      ans.emplace_back(cmp(A,A,buf[1]));
      ans.emplace_back(cmp(A,A,buf[2]));
      ans.emplace_back(cmp(A,A,buf[3]));

      ans.emplace_back(cmp(Z,bit_A[x],buf[0]));
      ans.emplace_back(cmp(Z,bit_B[y],buf[1]));

      ans.emplace_back(add(buf[0],buf[1],buf[2]));
      ans.emplace_back(cmp(O,buf[2],buf[3]));

      for(Int z=0;z<x+y;z++)
        ans.emplace_back(add(buf[3],buf[3],buf[3]));

      ans.emplace_back(add(C,buf[3],C));
    }
  }

  if(false){
    for(Int a=0;a<=10;a++)
      for(Int b=0;b<=10;b++)
        assert(solve(ans,a,b)==a*b);
  }

  if(false){
    Int a,b;
    a=1023;b=1023;assert(solve(ans,a,b)==a*b);
    a=1023;b=1024;assert(solve(ans,a,b)==a*b);
    a=1024;b=1023;assert(solve(ans,a,b)==a*b);
    a=1024;b=1024;assert(solve(ans,a,b)==a*b);
    a=999999999;b=1024;assert(solve(ans,a,b)==a*b);
    a=1024;b=999999999;assert(solve(ans,a,b)==a*b);
  }

  cout<<ans.size()<<endl;
  for(string s:ans) cout<<s<<endl;
  return 0;
}


Measured memory_bytes: 5276