#include <bits/stdc++.h>
using namespace std;using L=long long;using Z=__int128_t;const L M=1000000007LL,I=1LL<<62;
struct S{int n;vector<L>t;void b(vector<L>&a){int m=a.size()-1;n=1;while(n<m)n<<=1;t.assign(n<<1,I);for(int i=1;i<=m;i++)t[n+i-1]=a[i];for(int i=n-1;i;i--)t[i]=min(t[i<<1],t[i<<1|1]);}int g(int v,int a,int b,int l,int r,L x)const{if(l>b||r<a||t[v]>=x)return-1;if(a==b)return a;int m=a+b>>1,k=g(v<<1,a,m,l,r,x);return k!=-1?k:g(v<<1|1,m+1,b,l,r,x);}int f(int l,int r,L x)const{return l>r?-1:g(1,1,n,l,r,x);}};
L p(L a,L e){L r=1;while(e){if(e&1)r=(Z)r*a%M;a=(Z)a*a%M;e>>=1;}return r;}
int main(){ios::sync_with_stdio(false);cin.tie(nullptr);int n,q;cin>>n>>q;vector<L>a(n+1),b(n+1),c(n+1,I),s(n+1),u(n+1,1),v(n+1),o(n+1,1),d(n+1),r(n+1,1);for(int i=1;i<=n;i++){cin>>a[i]>>b[i];s[i]=s[i-1]+a[i];if(b[i]==1)v[i]=a[i]%M;else c[i]=a[i]/(b[i]-1)-s[i-1],u[i]=b[i]%M;}S y;y.b(c);for(int i=1;i<=n;i++)o[i]=(Z)u[i]*o[i-1]%M,d[i]=((Z)u[i]*d[i-1]+v[i])%M;r[n]=p(o[n],M-2);for(int i=n;i;i--)r[i-1]=(Z)r[i]*u[i]%M;auto h=[&](int i,int j,L x){L m=(Z)o[j]*r[i]%M,n=(d[j]-(Z)m*d[i])%M;if(n<0)n+=M;return(L)(((Z)m*(x%M)+n)%M);};while(q--){L x;int l,r;cin>>x>>l>>r;int i=l;L z=x;while(i<r&&z<M){L x=z-s[i],t=M-x;int j=y.f(i+1,r,x);auto k=lower_bound(s.begin()+i+1,s.begin()+r+1,t);int w=k==s.begin()+r+1?-1:k-s.begin();if(j==-1&&w==-1){z+=s[r]-s[i];i=r;break;}if(w!=-1&&(j==-1||w<j)){z+=s[w]-s[i];i=w;break;}L m=z+s[j-1]-s[i];z=(L)((Z)m*b[j]);i=j;}cout<<(i==r?z%M:h(i,r,z%M))<<'\n';}}