#include <bits/stdc++.h> // NeOWami
using namespace std;
#define ft first
#define sc second
#define int long long
const int N = 1e3 + 5;
const int BASE = 2e3 + 3;
using dbhash = pair<int, int>;
const int MOD1 = 1e9 + 7, MOD2 = 1e9 + 307;
const int inf = 1e18 + 2;
const int NeOWami = 2008050720080507;
int getHash(int x) {
return (x + inf) ^ NeOWami;
}
dbhash hint(int x) {
return {getHash(x) % MOD1, getHash(x) % MOD2};
}
dbhash operator + (const dbhash& u, const dbhash& v) {
return {(u.first + v.first) % MOD1, (u.second + v.second) % MOD2};
}
dbhash operator - (const dbhash& u, const dbhash& v) {
return {(u.first - v.first + MOD1) % MOD1, (u.second - v.second + MOD2) % MOD2};
}
int n, m, a[N], b[N], ans = 0;
dbhash ha[N], hb[N];
signed main() {
cin.tie(NULL)->sync_with_stdio(false);
if(ifstream("SIMILARITY.inp")) {
freopen("SIMILARITY.inp", "r", stdin);
freopen("SIMILARITY.out", "w", stdout);
}
cin >> n; for (int i = 1; i <= n; i++) cin >> a[i];
cin >> m; for (int i = 1; i <= m; i++) cin >> b[i];
ha[0] = hb[0] = {0, 0};
for (int i = 1; i <= n; i++) ha[i] = ha[i - 1] + hint(a[i]);
for (int i = 1; i <= m; i++) hb[i] = hb[i - 1] + hint(b[i]);
for (int len = min(n,m); len >= 1; len--) {
map<dbhash, int> cand;
for (int i = 1; i + len - 1 <= n; i++) cand[ha[i + len - 1] - ha[i - 1]] = i;
for (int i = 1; i + len - 1 <= m; i++) {
dbhash t = hb[i + len - 1] - hb[i - 1];
if (cand.count(t)) {
int j = cand[t];
cout << len << " " << j << " " << i;
return 0;
}
}
}
cout << "0 -1 -1";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IC8vIE5lT1dhbWkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgZnQgZmlyc3QKI2RlZmluZSBzYyBzZWNvbmQKI2RlZmluZSBpbnQgbG9uZyBsb25nCmNvbnN0IGludCBOID0gMWUzICsgNTsKY29uc3QgaW50IEJBU0UgPSAyZTMgKyAzOwoKdXNpbmcgZGJoYXNoID0gcGFpcjxpbnQsIGludD47CmNvbnN0IGludCBNT0QxID0gMWU5ICsgNywgTU9EMiA9IDFlOSArIDMwNzsKY29uc3QgaW50IGluZiA9IDFlMTggKyAyOwpjb25zdCBpbnQgTmVPV2FtaSA9IDIwMDgwNTA3MjAwODA1MDc7CmludCBnZXRIYXNoKGludCB4KSB7CiAgICByZXR1cm4gKHggKyBpbmYpIF4gTmVPV2FtaTsKfQpkYmhhc2ggaGludChpbnQgeCkgewogICAgcmV0dXJuIHtnZXRIYXNoKHgpICUgTU9EMSwgZ2V0SGFzaCh4KSAlIE1PRDJ9Owp9CmRiaGFzaCBvcGVyYXRvciArIChjb25zdCBkYmhhc2gmIHUsIGNvbnN0IGRiaGFzaCYgdikgewogICAgcmV0dXJuIHsodS5maXJzdCArIHYuZmlyc3QpICUgTU9EMSwgKHUuc2Vjb25kICsgdi5zZWNvbmQpICUgTU9EMn07Cn0KZGJoYXNoIG9wZXJhdG9yIC0gKGNvbnN0IGRiaGFzaCYgdSwgY29uc3QgZGJoYXNoJiB2KSB7CiAgICByZXR1cm4geyh1LmZpcnN0IC0gdi5maXJzdCArIE1PRDEpICUgTU9EMSwgKHUuc2Vjb25kIC0gdi5zZWNvbmQgKyBNT0QyKSAlIE1PRDJ9Owp9CgppbnQgbiwgbSwgYVtOXSwgYltOXSwgYW5zID0gMDsKZGJoYXNoIGhhW05dLCBoYltOXTsKc2lnbmVkIG1haW4oKSB7CiAgICBjaW4udGllKE5VTEwpLT5zeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgaWYoaWZzdHJlYW0oIlNJTUlMQVJJVFkuaW5wIikpIHsKICAgICAgICBmcmVvcGVuKCJTSU1JTEFSSVRZLmlucCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4oIlNJTUlMQVJJVFkub3V0IiwgInciLCBzdGRvdXQpOwogICAgfQogICAgY2luID4+IG47IGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgY2luID4+IGFbaV07CiAgICBjaW4gPj4gbTsgZm9yIChpbnQgaSA9IDE7IGkgPD0gbTsgaSsrKSBjaW4gPj4gYltpXTsKICAgIGhhWzBdID0gaGJbMF0gPSB7MCwgMH07CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGhhW2ldID0gaGFbaSAtIDFdICsgaGludChhW2ldKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG07IGkrKykgaGJbaV0gPSBoYltpIC0gMV0gKyBoaW50KGJbaV0pOwogICAgZm9yIChpbnQgbGVuID0gbWluKG4sbSk7IGxlbiA+PSAxOyBsZW4tLSkgewogICAgICAgIG1hcDxkYmhhc2gsIGludD4gY2FuZDsKICAgICAgICBmb3IgKGludCBpID0gMTsgaSArIGxlbiAtIDEgPD0gbjsgaSsrKSBjYW5kW2hhW2kgKyBsZW4gLSAxXSAtIGhhW2kgLSAxXV0gPSBpOwogICAgICAgIGZvciAoaW50IGkgPSAxOyBpICsgbGVuIC0gMSA8PSBtOyBpKyspIHsKICAgICAgICAgICAgZGJoYXNoIHQgPSBoYltpICsgbGVuIC0gMV0gLSBoYltpIC0gMV07CiAgICAgICAgICAgIGlmIChjYW5kLmNvdW50KHQpKSB7CiAgICAgICAgICAgICAgICBpbnQgaiA9IGNhbmRbdF07CiAgICAgICAgICAgICAgICBjb3V0IDw8IGxlbiA8PCAiICIgPDwgaiA8PCAiICIgPDwgaTsKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCAiMCAtMSAtMSI7CiAgICByZXR1cm4gMDsKfQ==