#include <bits/stdc++.h>
using namespace std;
template <class T>
T abs(T x) {
  return x > 0 ? x : -x;
}
struct tlong {
  int len;
  int val[50];
  int clear() {
    len = 0;
    memset(val, 0, sizeof(val));
    return 0;
  }
};
tlong fint(long long x) {
  tlong a;
  a.clear();
  a.len = 0;
  while (x) {
    a.val[a.len++] = x % 10;
    x /= 10;
  }
  return a;
}
int print(tlong a, bool nextline) {
  if (a.len == 0) printf("0");
  for (int i = a.len; i > 0; i--) printf("%d", a.val[i - 1]);
  if (nextline) printf("\n");
}
tlong operator+(tlong a, tlong b) {
  tlong c;
  c.clear();
  c.len = max(a.len, b.len);
  int r = 0;
  for (int i = 0; i < c.len; i++) {
    c.val[i] = a.val[i] + b.val[i] + r;
    r = c.val[i] / 10;
    c.val[i] %= 10;
  }
  while (r) {
    c.val[c.len] = r % 10;
    c.len++;
    r /= 10;
  }
  return c;
}
tlong operator*(tlong a, int b) {
  tlong c;
  c.clear();
  c.len = a.len;
  int r = 0;
  for (int i = 0; i < c.len; i++) {
    long long tmp = r + (long long)a.val[i] * b;
    c.val[i] = tmp % 10;
    r = tmp / 10;
  }
  while (r) {
    c.val[c.len] = r % 10;
    c.len++;
    r /= 10;
  }
  return c;
}
int n;
int cx[100000], cy[100000], q[100000];
int main() {
  long long m;
  int x, y;
  scanf("%d%I64d", &n, &m);
  scanf("%d%d", &x, &y);
  for (int i = 0; i < n; i++) scanf("%d%d", &cx[i], &cy[i]);
  for (int i = 0; i < n && m - i > 0; i++)
    if (((m - i + n - 1) / n) & 1)
      q[i] = 2;
    else
      q[i] = 0;
  int k = (m - 1) % n;
  for (int i = n - 1; i > 0; i -= 2) q[(k + i) % n] = -q[(k + i) % n];
  if (m & 1) {
    x = -x;
    y = -y;
  }
  for (int i = 0; i < n; i++) {
    x += q[i] * cx[i];
    y += q[i] * cy[i];
  }
  printf("%d %d\n", x, y);
  return 0;
}

### Prompt

Please formulate a CPP solution to the following problem:

You are given the following points with integer coordinates on the plane: M0, A0, A1, ..., An - 1, where n is odd number. Now we define the following infinite sequence of points Mi: Mi is symmetric to Mi - 1 according <image> (for every natural number i). Here point B is symmetric to A according M, if M is the center of the line segment AB. Given index j find the point Mj.

Input

On the first line you will be given an integer n (1 ≤ n ≤ 105), which will be odd, and j (1 ≤ j ≤ 1018), where j is the index of the desired point. The next line contains two space separated integers, the coordinates of M0. After that n lines follow, where the i-th line contain the space separated integer coordinates of the point Ai - 1. The absolute values of all input coordinates will not be greater then 1000.

Output

On a single line output the coordinates of Mj, space separated.

Examples

Input

3 4
0 0
1 1
2 3
-5 3


Output

14 0


Input

3 1
5 5
1000 1000
-1000 1000
3 100


Output

1995 1995

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
template <class T>
T abs(T x) {
  return x > 0 ? x : -x;
}
struct tlong {
  int len;
  int val[50];
  int clear() {
    len = 0;
    memset(val, 0, sizeof(val));
    return 0;
  }
};
tlong fint(long long x) {
  tlong a;
  a.clear();
  a.len = 0;
  while (x) {
    a.val[a.len++] = x % 10;
    x /= 10;
  }
  return a;
}
int print(tlong a, bool nextline) {
  if (a.len == 0) printf("0");
  for (int i = a.len; i > 0; i--) printf("%d", a.val[i - 1]);
  if (nextline) printf("\n");
}
tlong operator+(tlong a, tlong b) {
  tlong c;
  c.clear();
  c.len = max(a.len, b.len);
  int r = 0;
  for (int i = 0; i < c.len; i++) {
    c.val[i] = a.val[i] + b.val[i] + r;
    r = c.val[i] / 10;
    c.val[i] %= 10;
  }
  while (r) {
    c.val[c.len] = r % 10;
    c.len++;
    r /= 10;
  }
  return c;
}
tlong operator*(tlong a, int b) {
  tlong c;
  c.clear();
  c.len = a.len;
  int r = 0;
  for (int i = 0; i < c.len; i++) {
    long long tmp = r + (long long)a.val[i] * b;
    c.val[i] = tmp % 10;
    r = tmp / 10;
  }
  while (r) {
    c.val[c.len] = r % 10;
    c.len++;
    r /= 10;
  }
  return c;
}
int n;
int cx[100000], cy[100000], q[100000];
int main() {
  long long m;
  int x, y;
  scanf("%d%I64d", &n, &m);
  scanf("%d%d", &x, &y);
  for (int i = 0; i < n; i++) scanf("%d%d", &cx[i], &cy[i]);
  for (int i = 0; i < n && m - i > 0; i++)
    if (((m - i + n - 1) / n) & 1)
      q[i] = 2;
    else
      q[i] = 0;
  int k = (m - 1) % n;
  for (int i = n - 1; i > 0; i -= 2) q[(k + i) % n] = -q[(k + i) % n];
  if (m & 1) {
    x = -x;
    y = -y;
  }
  for (int i = 0; i < n; i++) {
    x += q[i] * cx[i];
    y += q[i] * cy[i];
  }
  printf("%d %d\n", x, y);
  return 0;
}

```