import sys input = lambda :sys.stdin.readline()[:-1] ni = lambda :int(input()) na = lambda :list(map(int,input().split())) yes = lambda :print("yes");Yes = lambda :print("Yes");YES = lambda : print("YES") no = lambda :print("no");No = lambda :print("No");NO = lambda : print("NO") ####################################################################### def Z_algorithm(s): n = len(s) Z = [0] * n # z[i] = sum(s[0::n - i], s[i::n]) Z[0] = n i, j = 1, 0 while i < n: # 共通部分を見つけるパート while i + j < n and s[j] == s[i + j]: j += 1 Z[i] = j if j == 0: i += 1 continue # 計算の再利用パート # k + Z[k] < j なら再利用できる k = 1 while k < j and k + Z[k] < j: Z[i + k] = Z[k] k += 1 # k個先まで見たのでk個先にバトンを渡す i += k j -= k return Z n,k = na() a = na() b = na() if k <= n-2: if sorted(a) == sorted(b): Yes() else: No() elif k == n: if a == b or b == a[::-1]: Yes() else: No() elif k > n: if a == b: Yes() else: No() else: S = a + a + b + b z = Z_algorithm(S) for i in range(n*2, n*4): if z[i] >= n: Yes() exit() No()