#include<bits/stdc++.h>usingnamespace std;constint MAX =1000+5;constint MAX_LEN =1024*40/4;unsignedint disk[MAX][MAX_LEN];
string lines[MAX];intmain(){//不加这条就只有30分
ios::sync_with_stdio(false);int n ,s ,l;
cin >> n >> s >> l;int len =0;for(int i =0; i < l;i++){int k;
cin >> k;
cin >> lines[k];
len = lines[k].size()/8;}int m;
cin >> m;int num;for(int i =0; i < m; i++){
cin >> num;int k =(num/s)%n , b = num/(s*(n-1))*s + num % s ;int ans =0;if(b >= len){
ans =-1;}elseif(lines[k].size()!=0){if(disk[k][b]==0)//没有转换过sscanf(lines[k].c_str()+b*8,"%8x",&disk[k][b]);
ans = disk[k][b];}elseif(l == n-1){for(int j =0;j < n;j++){if(disk[j][b]==0)//没有转换过sscanf(lines[j].c_str()+b*8,"%8x",&disk[j][b]);
ans ^= disk[j][b];}}else
ans =-1;if(ans !=-1)printf("%08X\n",ans);elseprintf("-\n");}}