#include <bits/stdc++.h>
using namespace std;
inline int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
void write(int x){
if(x<0){x=-x;putchar(45);}
if(x>9) write(x/10);
putchar(x%10+48);
return;
}
unsigned int getXorSum(const std::vector<unsigned int>& rec) {
unsigned ret = 0;
for (int i = 0; i < rec.size(); ++i) ret ^= rec[i];
return ret;
}
vector<int> v[3000005];
int n, q;
int s, ans;
int main() {
cin >> n >> q;
for (int i = 1; i <= n; i++) {
cin >> s;
for (int j = 1; j <= s; j++) {
cin >> s;
int tmp;
cin >> tmp;
v[1].push_back(tmp);
}
}
for (int i = 1; i <= q; i++) {
int x, y;
cin >> x >> y;
ans ^= v[x][y];
}
cout << ans;
return 0;
}