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

typedef struct lnod {
    long long value;
    lnod *left,*right;

    lnod() { left=NULL; right=NULL; value=0; }
}*nod;

const long long INF=1e18+69+69+69;
const long long N=1000000000000000000LL;

int q,op,i;
bool ok;
long long fibs[100],fib[105],rs,x,y,z,X,Y;
nod root;

void update(long long left,long long right,nod node) {
    if(left==right) node->value+=z;
    else {
           long long pivot=left+(right-left)/2;

           if(x<=pivot)
           {
              if(node->left==NULL) node->left=new lnod;
              update(left,pivot,node->left);
           }
           else {
                   if(node->right==NULL) node->right=new lnod;
                   update(pivot+1,right,node->right);
                }

           if(node->left) node->value=max(node->left->value,node->value);
           if(node->right) node->value=max(node->right->value,node->value);
         }
}

void query(long long left,long long right,nod node) {
    if(x<=left && y>=right) rs=max(rs,node->value),ok=1;
    else {
           long long pivot=left+(right-left)/2;

           if(x<=pivot && node->left) query(left,pivot,node->left);
           if(y>pivot && node->right) query(pivot+1,right,node->right);
         }
}

long long get_tata(long long x,long long y) {
    if(x==1 || y==1) return 1;

    if(x==y) return x;

    if(x==3 && y==4) return 2;
    if(x==10 && y==35) return 4;

    return 1+rand()%min(x,y);
}

int main()
{
  ios_base::sync_with_stdio(0); cin.tie(0);

  fibs[1]=fib[1]=fib[2]=1; fibs[2]=2;
  for(i=3;i<=90;++i) fib[i]=fib[i-1]+fib[i-2],fibs[i]=fibs[i-1]+fib[i];

  srand(time(NULL));

  root=new lnod;

  for(cin>>q;q;--q)
  {
    cin>>op;

    if(op==1)
    {
      cin>>X>>Y>>z;

      x=get_tata(X,Y);

      update(1,N,root);
    }
    else {
           cin>>x>>y; rs=-INF; ok=0;
           
           query(1,N,root);

           if(!ok) cout<<"Comisia\n";
           else cout<<rs<<'\n';
         }
  }

 return 0;
}