#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <map>
#include <deque>
using namespace std;
int f(int x, int y) {
return !x || !y;
}
int main() {
int T;
cin >> T;
while (T--) {
int q;
string s, t;
cin >> t >> s >> q;
s = '0' + s;
t = '0' + t;
for (char &c : s) c -= '0';
for (char &c : t) c -= '0';
const int n = max(s.size(), t.size());
s.resize(n * 2 + 2);
t.resize(n * 2 + 2);
vector<int> ys(q), xs(q);
vector<vector<int>> check(n * 2 + 1);
for (int i = 0; i < q; i++) {
scanf("%d %d", &ys[i], &xs[i]);
if ((ys[i] + xs[i]) % 2 == 0) {
check[ys[i] + xs[i]].push_back(i);
} else {
check[ys[i] + xs[i] - 1].push_back(i);
}
}
vector<int> ans(q);
deque<int> a;
int i = 0;
while (i <= n * 2) {
for (int j : check[i]) {
if ((ys[j] + xs[j]) % 2 == 0) {
ans[j] = a[xs[j]];
} else {
ans[j] = f(a[xs[j]], a[xs[j] - 1]);
}
}
if (i <= 7) {
deque<int> b;
for (int i = 0; i + 1 < a.size(); i++) {
b.push_back(f(a[i], a[i + 1]));
}
b.push_front(s[i + 1]);
b.push_back(t[i + 1]);
a = b;
i++;
} else {
const int m = a.size();
int l0 = f(s[i + 1], f(a[0], a[1]));
int l1 = f(f(a[0], a[1]), f(a[1], a[2]));
int r0 = f(f(a[m - 3], a[m - 2]), f(a[m - 2], a[m - 1]));
int r1 = f(f(a[m - 2], a[m - 1]), t[i + 1]);
a[0] = l0;
a[1] = l1;
a[m - 2] = r0;
a[m - 1] = r1;
a.push_front(s[i + 2]);
a.push_back(t[i + 2]);
i += 2;
}
}
for (int i = 0; i < q; i++) {
printf("%d", ans[i]);
}
putchar('\n');
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8ZGVxdWU+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGYoaW50IHgsIGludCB5KSB7CiAgcmV0dXJuICF4IHx8ICF5Owp9CgppbnQgbWFpbigpIHsKICBpbnQgVDsKICBjaW4gPj4gVDsKICB3aGlsZSAoVC0tKSB7CiAgICBpbnQgcTsKICAgIHN0cmluZyBzLCB0OwogICAgY2luID4+IHQgPj4gcyA+PiBxOwogICAgcyA9ICcwJyArIHM7CiAgICB0ID0gJzAnICsgdDsKICAgIGZvciAoY2hhciAmYyA6IHMpIGMgLT0gJzAnOwogICAgZm9yIChjaGFyICZjIDogdCkgYyAtPSAnMCc7CiAgICBjb25zdCBpbnQgbiA9IG1heChzLnNpemUoKSwgdC5zaXplKCkpOwogICAgcy5yZXNpemUobiAqIDIgKyAyKTsKICAgIHQucmVzaXplKG4gKiAyICsgMik7CiAgICB2ZWN0b3I8aW50PiB5cyhxKSwgeHMocSk7CiAgICB2ZWN0b3I8dmVjdG9yPGludD4+IGNoZWNrKG4gKiAyICsgMSk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IHE7IGkrKykgewogICAgICBzY2FuZigiJWQgJWQiLCAmeXNbaV0sICZ4c1tpXSk7CiAgICAgIGlmICgoeXNbaV0gKyB4c1tpXSkgJSAyID09IDApIHsKICAgICAgICBjaGVja1t5c1tpXSArIHhzW2ldXS5wdXNoX2JhY2soaSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY2hlY2tbeXNbaV0gKyB4c1tpXSAtIDFdLnB1c2hfYmFjayhpKTsKICAgICAgfQogICAgfQogICAgdmVjdG9yPGludD4gYW5zKHEpOwogICAgZGVxdWU8aW50PiBhOwogICAgaW50IGkgPSAwOwogICAgd2hpbGUgKGkgPD0gbiAqIDIpIHsKICAgICAgZm9yIChpbnQgaiA6IGNoZWNrW2ldKSB7CiAgICAgICAgaWYgKCh5c1tqXSArIHhzW2pdKSAlIDIgPT0gMCkgewogICAgICAgICAgYW5zW2pdID0gYVt4c1tqXV07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGFuc1tqXSA9IGYoYVt4c1tqXV0sIGFbeHNbal0gLSAxXSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmIChpIDw9IDcpIHsKICAgICAgICBkZXF1ZTxpbnQ+IGI7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgKyAxIDwgYS5zaXplKCk7IGkrKykgewogICAgICAgICAgYi5wdXNoX2JhY2soZihhW2ldLCBhW2kgKyAxXSkpOwogICAgICAgIH0KICAgICAgICBiLnB1c2hfZnJvbnQoc1tpICsgMV0pOwogICAgICAgIGIucHVzaF9iYWNrKHRbaSArIDFdKTsKICAgICAgICBhID0gYjsKICAgICAgICBpKys7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY29uc3QgaW50IG0gPSBhLnNpemUoKTsKICAgICAgICBpbnQgbDAgPSBmKHNbaSArIDFdLCBmKGFbMF0sIGFbMV0pKTsKICAgICAgICBpbnQgbDEgPSBmKGYoYVswXSwgYVsxXSksIGYoYVsxXSwgYVsyXSkpOwogICAgICAgIGludCByMCA9IGYoZihhW20gLSAzXSwgYVttIC0gMl0pLCBmKGFbbSAtIDJdLCBhW20gLSAxXSkpOwogICAgICAgIGludCByMSA9IGYoZihhW20gLSAyXSwgYVttIC0gMV0pLCB0W2kgKyAxXSk7CiAgICAgICAgYVswXSA9IGwwOwogICAgICAgIGFbMV0gPSBsMTsKICAgICAgICBhW20gLSAyXSA9IHIwOwogICAgICAgIGFbbSAtIDFdID0gcjE7CiAgICAgICAgYS5wdXNoX2Zyb250KHNbaSArIDJdKTsKICAgICAgICBhLnB1c2hfYmFjayh0W2kgKyAyXSk7CiAgICAgICAgaSArPSAyOwogICAgICB9CiAgICB9CiAgICBmb3IgKGludCBpID0gMDsgaSA8IHE7IGkrKykgewogICAgICBwcmludGYoIiVkIiwgYW5zW2ldKTsKICAgIH0KICAgIHB1dGNoYXIoJ1xuJyk7CiAgfQp9Cg==