#include <cstdio>
#include <cstring>
#include <utility>
const int MAX_LENGTH = 100;
int A[MAX_LENGTH], B[MAX_LENGTH];
int lis[MAX_LENGTH][MAX_LENGTH];
std::pair<int, int> lis_prev[MAX_LENGTH][MAX_LENGTH];
void print_longest_common_subsequence(int i, int k) {
if (i != 0 and k != 0) {
const auto & pr = lis_prev[i][k];
print_longest_common_subsequence(pr.first, pr.second);
if (pr.first == i-1 and pr.second == k-1)
printf("%d ", A[pr.first]);
}
}
int main() {
int na, nb;
while (scanf("%d", &na) == 1) {
for (int i = 0; i < na; ++i) scanf("%d", A+i);
scanf("%d", &nb);
for (int i = 0; i < nb; ++i) scanf("%d", B+i);
memset(lis, 0, sizeof(lis));
for (int i = 0; i < na; ++i)
for (int k = 0; k < nb; ++k) {
if (A[i] == B[k]) {
lis[i+1][k+1] = lis[i][k] + 1;
lis_prev[i+1][k+1] = std::make_pair(i, k);
} else {
if (lis[i+1][k] >= lis[i][k+1]) {
lis[i+1][k+1] = lis[i+1][k];
lis_prev[i+1][k+1] = std::make_pair(i+1, k);
} else {
lis[i+1][k+1] = lis[i][k+1];
lis_prev[i+1][k+1] = std::make_pair(i, k+1);
}
}
}
printf("lcc length : %d\n", lis[na][nb]);
print_longest_common_subsequence(na, nb);
printf("\n");
}
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGNzdHJpbmc+CiNpbmNsdWRlIDx1dGlsaXR5PgoKY29uc3QgaW50IE1BWF9MRU5HVEggPSAxMDA7CgppbnQgQVtNQVhfTEVOR1RIXSwgQltNQVhfTEVOR1RIXTsKaW50IGxpc1tNQVhfTEVOR1RIXVtNQVhfTEVOR1RIXTsKc3RkOjpwYWlyPGludCwgaW50PiBsaXNfcHJldltNQVhfTEVOR1RIXVtNQVhfTEVOR1RIXTsKCnZvaWQgcHJpbnRfbG9uZ2VzdF9jb21tb25fc3Vic2VxdWVuY2UoaW50IGksIGludCBrKSB7CiAgICBpZiAoaSAhPSAwIGFuZCBrICE9IDApIHsKICAgICAgICBjb25zdCBhdXRvICYgcHIgPSBsaXNfcHJldltpXVtrXTsKICAgICAgICBwcmludF9sb25nZXN0X2NvbW1vbl9zdWJzZXF1ZW5jZShwci5maXJzdCwgcHIuc2Vjb25kKTsKICAgICAgICBpZiAocHIuZmlyc3QgPT0gaS0xIGFuZCBwci5zZWNvbmQgPT0gay0xKQogICAgICAgICAgICBwcmludGYoIiVkICIsIEFbcHIuZmlyc3RdKTsKICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBpbnQgbmEsIG5iOwogICAgd2hpbGUgKHNjYW5mKCIlZCIsICZuYSkgPT0gMSkgewogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbmE7ICsraSkgc2NhbmYoIiVkIiwgQStpKTsKICAgICAgICBzY2FuZigiJWQiLCAmbmIpOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbmI7ICsraSkgc2NhbmYoIiVkIiwgQitpKTsKICAgICAgICBtZW1zZXQobGlzLCAwLCBzaXplb2YobGlzKSk7CgogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbmE7ICsraSkKICAgICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBuYjsgKytrKSB7CiAgICAgICAgICAgICAgICBpZiAoQVtpXSA9PSBCW2tdKSB7CiAgICAgICAgICAgICAgICAgICAgbGlzW2krMV1baysxXSA9IGxpc1tpXVtrXSArIDE7CiAgICAgICAgICAgICAgICAgICAgbGlzX3ByZXZbaSsxXVtrKzFdID0gc3RkOjptYWtlX3BhaXIoaSwgayk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmIChsaXNbaSsxXVtrXSA+PSBsaXNbaV1baysxXSkgewogICAgICAgICAgICAgICAgICAgICAgICBsaXNbaSsxXVtrKzFdID0gbGlzW2krMV1ba107CiAgICAgICAgICAgICAgICAgICAgICAgIGxpc19wcmV2W2krMV1baysxXSA9IHN0ZDo6bWFrZV9wYWlyKGkrMSwgayk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgbGlzW2krMV1baysxXSA9IGxpc1tpXVtrKzFdOwogICAgICAgICAgICAgICAgICAgICAgICBsaXNfcHJldltpKzFdW2srMV0gPSBzdGQ6Om1ha2VfcGFpcihpLCBrKzEpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIHByaW50ZigibGNjIGxlbmd0aCA6ICVkXG4iLCBsaXNbbmFdW25iXSk7CiAgICAgICAgcHJpbnRfbG9uZ2VzdF9jb21tb25fc3Vic2VxdWVuY2UobmEsIG5iKTsKICAgICAgICBwcmludGYoIlxuIik7CgogICAgfQogICAgcmV0dXJuIDA7Cn0=