#include<bits/stdc++.h>
#define int long long
using namespace std;
const long long mod=1e7+19;
int n;
int q,t;
const int maxn=2e6+10;
struct caozuo{
int opt;
long long val,to;
}e[maxn<<2],A[maxn<<2];
int a[500000],b[500000];
int c[50000005],num_c;
namespace work
{
const long long N=2e7+10;
int tag=0;
bool c[N];
long long ans=0,sum=0;
long long aa[50000005];
long long tong[50000005];
int tot=0;
void solve()
{
for(int i=1;i<=q*t;i++)
{
if(A[i].opt==1)
{
if(!c[A[i].to])
{
sum=sum-tag%mod+A[i].val%mod;
sum%=mod;
c[A[i].to]=1;
aa[A[i].to]=A[i].val%mod;
tong[++tot]=A[i].to;
}
else
{
sum=sum-aa[A[i].to]%mod+A[i].val%mod;
aa[A[i].to]=A[i].val%mod;
}
}
if(A[i].opt==2)
{
for(int j=1;j<=tot;j++)
{
aa[tong[j]]+=A[i].val%mod;
aa[tong[j]]%=mod;
}
tag=tag+A[i].val%mod;
tag%=mod;
sum=sum+A[i].val*n%mod;
sum%=mod;
}
if(A[i].opt==3)
{
for(int j=1;j<=tot;j++)
{
aa[tong[j]]=aa[tong[j]]*A[i].val%mod;
aa[tong[j]]%=mod;
}
sum=sum*A[i].val%mod;
sum%=mod;
tag=tag*A[i].val%mod;
tag%=mod;
}
if(A[i].opt==4)
{
for(int j=1;j<=tot;j++)
{
aa[tong[j]]=A[i].val%mod;
c[tong[j]]=0;
}
tot=0;
sum=A[i].val*n%mod;
sum%=mod;
tag=A[i].val%mod;
tag%=mod;
}
if(A[i].opt==5)
{
if(c[A[i].to])
{
ans=ans+aa[A[i].to]%mod;
ans%=mod;
}
else
{
ans=ans+tag%mod;
ans%=mod;
}
}
if(A[i].opt==6)
{
ans=ans+sum%mod;
ans%=mod;
}
}
cout<<(ans%mod+mod)%mod;
}
}
signed main()
{
scanf("%lld",&n);
scanf("%lld",&q);
c[++num_c]=0;
c[++num_c]=n+1;
for(int i=1;i<=q;i++)
{
int opt;
scanf("%lld",&opt);
e[i].opt=opt;
if(opt==1)
{
int num,val;
scanf("%lld%lld",&num,&val);
e[i].val=(val%mod+mod)%mod,e[i].to=num;
c[++num_c]=num;
}
if(opt==5)
{
int num;
scanf("%lld",&num);
e[i].to=num;
c[++num_c]=num;
}
if(opt==2||opt==3||opt==4)
{
int val;
scanf("%lld",&val);
e[i].val=(val%mod+mod)%mod;
}
}
sort(c+1,c+1+num_c);
int tot_c=unique(c+1,c+1+num_c)-(c+1);
scanf("%lld",&t);
for(int i=1;i<=t;i++)
{
scanf("%lld%lld",&a[i],&b[i]);
}
for(int i=1;i<=t;i++)
{
for(int j=1;j<=q;j++)
{
A[(i-1)*q+j].opt=e[(a[i]+j*b[i])%q+1].opt;
A[(i-1)*q+j].val=(e[(a[i]+j*b[i])%q+1].val%mod+mod)%mod;
A[(i-1)*q+j].to=lower_bound(c+1,c+1+tot_c,e[(a[i]+j*b[i])%q+1].to)-c;
}
}
work::solve();
return 0;
}