n = int(eval(input()))



a = list(map(int, input().split()))



d = {}



for i in a:

  for j in range(i - 1, i + 2): #aの値の両隣まで

    d[j] = d.get(j, 0) + 1#getは第一引数で指定したキーがなかったら第二引数で指定した値を戻す

    

    

print((max(d.values())))
N = int(eval(input()))



a = list(map(int, input().split()))



nums = {}

for i in a:

  nums[i] = nums.get(i, 0) + 1

  nums[i+1] = nums.get(i+1, 0) + 1

  nums[i-1] = nums.get(i-1, 0) + 1



ans = 0

for i in list(nums.values()):

  ans = max(ans, i)



print(ans)
n = int(eval(input()))
a = list(map(int, input().split()))
d = {}
for i in a:
    for j in range(i - 1, i + 2):  # aの値の両隣まで
        d[j] = d.get(j, 0) + 1  # getは第一引数で指定したキーがなかったら第二引数で指定した値を戻す
print((max(d.values())))

N = int(eval(input()))
a = list(map(int, input().split()))
nums = {}
for i in a:
    nums[i] = nums.get(i, 0) + 1
    nums[i + 1] = nums.get(i + 1, 0) + 1
    nums[i - 1] = nums.get(i - 1, 0) + 1
ans = 0
for i in list(nums.values()):
    ans = max(ans, i)
print(ans)

-n = int(eval(input())) +N = int(eval(input())) -d = {} +nums = {} -    for j in range(i - 1, i + 2):  # aの値の両隣まで -        d[j] = d.get(j, 0) + 1  # getは第一引数で指定したキーがなかったら第二引数で指定した値を戻す -print((max(d.values()))) +    nums[i] = nums.get(i, 0) + 1 +    nums[i + 1] = nums.get(i + 1, 0) + 1 +    nums[i - 1] = nums.get(i - 1, 0) + 1 +ans = 0 +for i in list(nums.values()): +    ans = max(ans, i) +print(ans)