#include <bits/stdc++.h>
using namespace std;
const int maxn=1e6+10;
const long long mod=1e9+7;
long long sum[maxn*4],val[maxn*4];
int ls[maxn*4],rs[maxn*4];
int cnt;
void update(int &root,int l,int r,long long k,long long num)
{
if(!root) root=++cnt;
sum[root]+=k;
val[root]+=(long long )k*num;
val[root]%=mod;
if(l==r)
return ;
int mid=l+r>>1;
if(num<=mid)
update(ls[root],l,mid,k,num);
else
update(rs[root],mid+1,r,k,num);
}
long long query(int root,int l,int r,long long x)
{
if(l==r)
{
return (long long)x*l%mod;
}
int mid=l+r>>1;
long long ans=0;
if(x>sum[ls[root]])
ans+=(val[ls[root]]+query(rs[root],mid+1,r,x-sum[ls[root]]))%mod,ans%=mod;
else
ans+=query(ls[root],l,mid,x),ans%=mod;
return ans%mod;
}
int main()
{
int t,rt=0;
scanf("%d",&t);
int op;
while(t--)
{
long long l,r;
scanf("%d%lld%lld",&op,&l,&r);
if(op==1)
{
update(rt,0,1e9,l,r);
}
else
{
long long ans=(query(rt,0,1e9,r)-query(rt,0,1e9,l-1))%mod+mod;
ans%=mod;
printf("%lld\n",ans);
}
}
return 0;
}