Link to this code: https://cses.fi/paste/c98a071b7c78dd77d8c7b2/
""" 777 """

n1, n2 = [int(x) for x in input().split()]
a = [int(x) for x in input().split()]
b = [int(x) for x in input().split()]

# recursive (Runtime error)
'''
dp = [[-1]*(n2 + 1) for _ in range(n1 + 1)]
def top_down(i1, i2):
    if i1 == n1 or i2 == n2:
        return 0
    if dp[i1][i2] == -1:
        dp[i1][i2] = (
            (1 + top_down(i1 + 1, i2 + 1)) if a[i1] == b[i2]
            else max(top_down(i1 + 1, i2), top_down(i1, i2 + 1))
        )
    return dp[i1][i2]
top_down(0, 0)
'''

# iterative
dp = [[0]*(n2 + 1) for _ in range(n1 + 1)]
for i in range(n1 - 1, -1, -1):
    for j in range(n2 - 1, -1, -1):
        dp[i][j] = (1 + dp[i + 1][j + 1]) if a[i] == b[j] else max(dp[i + 1][j], dp[i][j + 1])


def print_lcs():
    lcs_length = dp[0][0]
    lcs = []
    i = j = 0
    while i < n1 and j < n2:
        if a[i] == b[j]:
            lcs.append(a[i])
            i += 1
            j += 1
        # better to use top_down(i + 1, j), top_down(i, j + 1) for recursive
        elif dp[i+1][j] > dp[i][j+1]:
            i += 1
        else:
            j += 1
    # print(f"LCSubsequence is {lcs} and its length is {lcs_length}")
    print(lcs_length)
    print(*lcs)


print_lcs()