#include #include #include #include #include #include #include #include #include #include #include #include #include #define rep(i,a,b) for(int i=a;i<=b;i++) using namespace std; using ll = long long; using vec = vector; using Graph = vector; using Pair = pair; void debug1(vec v){for(auto x:v)cout << x << ' ';cout << endl;} void debug2(vector v){for(auto x:v)cout << '(' << x.first << ',' << x.second << ')' << endl;} void debug3(Graph v){rep(i,0,v.size()-1)debug1(v[i]);cout << endl;} int main(){ int n,k; cin >> n >> k; vectors(n+1),t(n+1); rep(i,1,n)cin >> s[i]; rep(i,1,n)cin >> t[i]; bool ans = true; rep(i,1,k){ multiset p,q; int j=i; while(j <= n){ p.insert(s[j]); q.insert(t[j]); j += k; } if(p != q)ans = false; } if(ans)cout << "Yes" << endl; else cout << "No" << endl; }