#include #include #define rep(i,n) for (int i = 0; i < int(n); ++i) #define all(v) v.begin(),v.end() using namespace std; void yes(){ printf("Yes\n"); } void no(){ printf("No\n"); } int main(){ int n, k; cin >> n >> k; vector a(n), b(n); rep(i,n) cin >> a[i]; rep(j,n) cin >> b[j]; if (a == b){ yes(); } else if (k > n){ no(); } else if (k == n){ reverse(all(b)); a == b ? yes() : no(); } else if (k == n-1){ vector c(3*n), d(3*n); rep(i,n){ c[i] = a[i], d[i] = a[i]; c[n+i] = b[i], d[n+i] = b[n-1-i]; c[2*n+i] = b[i], d[2*n+i] = b[n-1-i]; } auto zc = atcoder::z_algorithm(c); auto zd = atcoder::z_algorithm(d); bool ans = false; rep(i,n){ if (zc[n+i] >= n) ans = true; if (zd[n+i] >= n) ans = true; } ans ? yes() : no(); } else { vector sa = a; sort(all(sa)); vector sb = b; sort(all(sb)); sa == sb ? yes(): no(); } }