#include <bits/stdc++.h>
using namespace std;
template <class T>
using vv = vector<vector<T>>;
template <class T>
inline bool MX(T &l, const T &r) {
  return l < r ? l = r, 1 : 0;
}
template <class T>
inline bool MN(T &l, const T &r) {
  return l > r ? l = r, 1 : 0;
}
const long long MOD = 1e9 + 7;
int N;
long long C[114514];
long long T[114514];
vector<long long> ds, es;
int main() {
  scanf("%d", &N);
  for (int(i) = 0; (i) < (N); ++(i)) {
    scanf("%lld", &C[i]);
    if (i > 0) ds.emplace_back(C[i] - C[i - 1]);
  }
  for (int(i) = 0; (i) < (N); ++(i)) {
    scanf("%lld", &T[i]);
    if (i > 0) es.emplace_back(T[i] - T[i - 1]);
  }
  sort((ds).begin(), (ds).end());
  sort((es).begin(), (es).end());
  if (C[0] != T[0]) {
    puts("No");
    return 0;
  }
  assert((int)ds.size() == N - 1);
  assert((int)es.size() == N - 1);
  for (int(i) = 0; (i) < (N - 1); ++(i)) {
    if (ds[i] != es[i]) {
      puts("No");
      return 0;
    }
  }
  puts("Yes");
}
