#include<iostream>
#define int long long
using namespace std;
const int MOD=(int)1e4;
int n,m,q;
struct fc{
int op,id=0,v=0;
}option[(int)2e5+5];
int sum[(int)2e5+5];
int add[(int)2e5+5];
int ans[(int)2e5+5];
int cnt=0;
int mpow(int base,int power){
int result = 1;
while (power > 0){
if (power & 1)result *= base;
result%=MOD;
base *= base;
power >>= 1;
}
return result;
}
void solve(){
for(int i=1;i<=cnt;i++){
ans[option[add[i]].id]=(ans[option[add[i]].id]+(option[add[i]].v*mpow(2,(sum[cnt]-sum[i-1])))%MOD)%MOD;
//cout<<mpow(2,sum[cnt]-sum[i-1])<<" ";
}
//cout<<endl;
return;
}
signed main(){
cin>>n>>m>>q;
for(int i=1;i<=m;i++){
cin>>option[i].op;
if(option[i].op==1){
cin>>option[i].id>>option[i].v;
option[i].v%=MOD;
}
}
// for(int i=1;i<=m;i++){
// cout<<option[i].op<<" "<<option[i].id<<" "<<option[i].v<<"\n";
// }
int tot=0;
for(int i=1;i<=q;i++){
int l,r;
cin>>l>>r;
for(int j=l;j<=r;j++){
cout<<j<<" ";
if(option[j].op==1){
sum[cnt]=tot;
add[++cnt]=j;
//tot=0;
}
else{
tot++;
}
}
cout<<endl;
}
sum[cnt]=tot;
// for(int i=1;i<=cnt;i++){
// cout<<option[add[i]].id<<" "<<option[add[i]].v<<" "<<sum[cnt]-sum[i-1]<<"\n";
// }
// return 0;
//return 0;
solve();
for(int i=1;i<=n;i++){
cout<<ans[i]<<" ";
}
return 0;
}
求调