写了个又慢又丑的 O(T(q+r∑l)) 的做法 本地大样例 1.5s,luogu死活60pts过不去
// 前を向け 終わらないさ
// 一生僕らは生きて征け
#include <bits/stdc++.h>
//#include<ext/pb_ds/hash.policy.hpp>
//using namespace __gnu_pbds;
using namespace std;
#define INF 0x3f3f3f3f
#define ull unsigned long long
#define ll long long
#define WA cerr<<"meowww!\n";
#define eps 1e-5
#define none -1145141919
#define pii pair<int,int>
#define Y cout<<"Yes\n"
#define N cout<<"No\n"
#define H cout<<"\n";
#define WH cerr<<"\n";
#define fi first
#define se second
#define C continue;
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define FOR(i,a,b) for(int i=(a);i<(b);i++)
#define Rof(i,a,b) for(int i=(a);i>=(b);--i)
#define ROF(i,a,b) for(int i=(a);i>(b);--i)
#define G(i,p) for(auto i:pq[p])
#define VG(i,p) for(int i=0;i<pq[p].size();i++)
#define pb push_back
#define pk pop_back
#define WR(x) cerr<<(x)<<"\n";
#define MAXN 200019
#define K cout<<" "
#define int long long
//const int MOD=;
//void MD(int &x) { if(x<0) x+=MOD; if(x>=MOD) x-=MOD; return ; }
void Umn(int &x,int y) { if(x>y) x=y; return ; }
void Umx(int &x,int y) { if(x<y) x=y; return ; }
int rd() { int x; cin>>x; return x; }
void wr(int x) { cout<<x; return ; }
int dp[102][MAXN];
int col[MAXN];int n,k,q; vector<vector<int> > a,qz,qqz;int m=0;
ll cnt=0;
int mxc=0;
void init() {
For(i,1,n) For(j,0,a[i][0]+1) {qz[i][j]=qqz[i][j];qqz[i][j]=0;}
For(i,1,n)For(j,1,a[i][0]){int tp=a[i][j];qz[i][j+1]+=col[tp];if(j+k+1<=a[i][0])qz[i][j+k+1]-=col[tp];}
For(i,1,n)For(j,1,a[i][0]){qz[i][j]+=qz[i][j-1];}
For(i,0,mxc)col[i]=0;
//For(i,1,n){For(j,1,a[i][0])cerr<<qz[i][j]<<" "; WH;} WH;
//WR("T");
return ;
}
int clc[MAXN],bx[MAXN];
main()
{
//freopen("in2.in","r",stdin);
// freopen("chain6.in","r",stdin);
// freopen("out.txt","w",stdout);
//ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int _;cin>>_;
//double st=clock();
int allc=0;
while(_--)
{
a.clear();
cnt=0;
qz.clear();qqz.clear();
For(i,0,100)For(j,0,mxc+1)dp[i][j]=0; For(i,0,mxc+1)col[i]=0; mxc=0; m=0;
cin>>n>>k>>q; if(a.size()<n+1){a.resize(n+1); qz.resize(n+1);qqz.resize(n+1);} --k;
For(i,1,n) { int tp;cin>>tp;Umx(m,tp);if(a[i].size()<tp+2){a[i].resize(tp+2);qz[i].resize(tp+2,0);qqz[i].resize(tp+2,0);} a[i][0]=tp;
For(j,1,tp) { cin>>a[i][j];Umx(mxc,a[i][j]); } }
col[1]++;//qqz.clear();qz.clear();
For(p,1,100)
{
init();
For(i,1,n) {++allc;For(j,1,a[i][0]) {
int tp=qz[i][j],nc=a[i][j]; dp[p][nc]+=tp; col[nc]+=tp;
if(clc[nc]!=allc){clc[nc]=allc;bx[nc]=0;}bx[nc]+=tp;
}
For(j,1,a[i][0]) { qqz[i][j+1]-=bx[a[i][j]];if(j+k+1<=a[i][0])qqz[i][j+k+1]+=bx[a[i][j]]; }
}
}
For(i,1,q){int r,c;cin>>r>>c;if(dp[r][c])puts("1");else puts("0");}
//cerr<<fixed<<setprecision(20)<<(clock()-st)/CLOCKS_PER_SEC<<"\n";//st=clock();
}
return 0;
}