#include <bits/stdc++.h>
using namespace std;
const long long M = 998244353;
const long long NMAX = 200011;
const long long inf = 1E18;
const long double eps = 1e-9;
const long long base = 29;
struct pt {
  long long x, y;
  pt(long long x, long long y) {
    this->x = x;
    this->y = y;
  }
  pt() {}
};
pt a[NMAX];
pt b[NMAX];
long long scal(pt a, pt b) { return a.x * b.x + a.y * b.y; }
long long vect(pt a, pt b) { return a.x * b.y - a.y * b.x; }
pt operator-(pt a, pt b) { return pt(a.x - b.x, a.y - b.y); }
int cmp1(pt a, pt b) {
  if (a.x == b.x) return a.y < b.y;
  return a.x < b.x;
}
int cmp2(pt a, pt b) {
  if (vect(a, b) == 0) return scal(a, a) < scal(b, b);
  return vect(a, b) > 0;
}
int ch(pt a[], int n) {
  sort(a, a + n, cmp1);
  for (int i = 1; i < n; i++) a[i] = a[i] - a[0];
  a[0] = a[0] - a[0];
  sort(a + 1, a + n, cmp2);
  int j = 1;
  for (int i = 1; i < n; i++) {
    while (j >= 2 && vect(a[j - 1] - a[j - 2], a[i] - a[j - 1]) <= 0) {
      j--;
    }
    a[j] = a[i];
    j++;
  }
  return j;
}
pair<pair<long long, long long>, pair<long long, long long> > u[NMAX], v[NMAX];
int sa[NMAX];
int sb[NMAX];
void init(pair<pair<long long, long long>, pair<long long, long long> > v[],
          pt a[], int n) {
  for (int i = 1; i < n - 1; i++) {
    v[i].first.first = vect(a[i + 1] - a[i], a[i - 1] - a[i]);
    v[i].first.second = scal(a[i + 1] - a[i], a[i - 1] - a[i]);
    v[i].second.first = scal(a[i + 1] - a[i], a[i + 1] - a[i]);
    v[i].second.second = scal(a[i - 1] - a[i], a[i - 1] - a[i]);
  }
  v[0].first.first = vect(a[1] - a[0], a[n - 1] - a[0]);
  v[0].first.second = scal(a[1] - a[0], a[n - 1] - a[0]);
  v[0].second.first = scal(a[1] - a[0], a[1] - a[0]);
  v[0].second.second = scal(a[n - 1] - a[0], a[n - 1] - a[0]);
  v[n - 1].first.first = vect(a[0] - a[n - 1], a[n - 2] - a[n - 1]);
  v[n - 1].first.second = scal(a[0] - a[n - 1], a[n - 2] - a[n - 1]);
  v[n - 1].second.first = scal(a[0] - a[n - 1], a[0] - a[n - 1]);
  v[n - 1].second.second = scal(a[n - 2] - a[n - 1], a[n - 2] - a[n - 1]);
  return;
}
signed main() {
  cin.tie(0);
  cout.tie(0);
  cin.sync_with_stdio(0);
  cout.sync_with_stdio(0);
  cout.precision(20);
  int n, m;
  cin >> n >> m;
  for (int i = 0; i < n; i++) cin >> a[i].x >> a[i].y;
  for (int i = 0; i < m; i++) cin >> b[i].x >> b[i].y;
  n = ch(a, n);
  m = ch(b, m);
  if (m != n) {
    cout << "NO";
    return 0;
  }
  init(v, a, n);
  init(u, b, n);
  v[n] = {{inf, inf}, {0, 0}};
  u[m] = {{inf, inf}, {0, 0}};
  for (int i = 0; i < m; i++) {
    v[n + i + 1] = u[i];
  }
  for (int i = 0; i < n; i++) {
    u[m + i + 1] = v[i];
  }
  int l = 0, r = 0;
  for (int i = 1; i < n + m + 1; i++) {
    if (i < r) {
      sa[i] = min(sa[i - l], r - i);
    }
    while (sa[i] + i < n + m + 1 && v[sa[i] + i] == v[sa[i]]) {
      sa[i]++;
    }
    if (sa[i] + i > r) {
      r = sa[i] + i;
      l = i;
    }
  }
  l = 0;
  r = 0;
  for (int i = 1; i < n + m + 1; i++) {
    if (i < r) {
      sb[i] = min(sb[i - l], r - i);
    }
    while (sb[i] + i < n + m + 1 && u[sb[i] + i] == u[sb[i]]) {
      sb[i]++;
    }
    if (sb[i] + i > r) {
      r = sb[i] + i;
      l = i;
    }
  }
  if (sa[n + 1] == n) {
    cout << "YES";
    return 0;
  }
  for (int i = 1; i < n; i++) {
    if (sa[i + n + 1] == n - i) {
      if (sb[n + n - i + 1] == i) {
        cout << "YES";
        return 0;
      }
    }
  }
  cout << "NO";
  return 0;
};
