#include <bits/stdc++.h>
const int mx = 400005;
int i, j, n, nn;
long long m, rx, ry, x[mx], y[mx], ax[mx], ay[mx];
int main() {
  scanf("%d%I64d", &n, &m);
  scanf("%I64d%I64d", &x[0], &y[0]);
  for (i = 0; i < n; i++) scanf("%I64d%I64d", &ax[i], &ay[i]);
  for (i = j = 0; i < 400000; i++) {
    x[i + 1] = 2 * ax[j] - x[i];
    y[i + 1] = 2 * ay[j] - y[i];
    if (++j == n) j = 0;
  }
  if (m <= 400000) {
    printf("%I64d %I64d\n", x[m], y[m]);
    return 0;
  } else
    nn = (m % n) + n;
  if (x[n + nn] - x[nn] == x[2 * n + nn] - x[n + nn] &&
      y[n + nn] - y[nn] == y[2 * n + nn] - y[n + nn]) {
    m = (m - nn) / n;
    rx = x[nn] + (x[n + nn] - x[nn]) * m;
    ry = y[nn] + (y[n + nn] - y[nn]) * m;
  } else if (x[n + nn] - x[nn] == -x[2 * n + nn] + x[n + nn] &&
             y[n + nn] - y[nn] == -y[2 * n + nn] + y[n + nn]) {
    i = m % (2 * n);
    if (i < 100) i += 2 * n;
    rx = x[i];
    ry = y[i];
  } else
    n /= 0;
  printf("%I64d %I64d\n", rx, ry);
  return 0;
}

### Prompt

Develop a solution in cpp to the problem described below:

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>
const int mx = 400005;
int i, j, n, nn;
long long m, rx, ry, x[mx], y[mx], ax[mx], ay[mx];
int main() {
  scanf("%d%I64d", &n, &m);
  scanf("%I64d%I64d", &x[0], &y[0]);
  for (i = 0; i < n; i++) scanf("%I64d%I64d", &ax[i], &ay[i]);
  for (i = j = 0; i < 400000; i++) {
    x[i + 1] = 2 * ax[j] - x[i];
    y[i + 1] = 2 * ay[j] - y[i];
    if (++j == n) j = 0;
  }
  if (m <= 400000) {
    printf("%I64d %I64d\n", x[m], y[m]);
    return 0;
  } else
    nn = (m % n) + n;
  if (x[n + nn] - x[nn] == x[2 * n + nn] - x[n + nn] &&
      y[n + nn] - y[nn] == y[2 * n + nn] - y[n + nn]) {
    m = (m - nn) / n;
    rx = x[nn] + (x[n + nn] - x[nn]) * m;
    ry = y[nn] + (y[n + nn] - y[nn]) * m;
  } else if (x[n + nn] - x[nn] == -x[2 * n + nn] + x[n + nn] &&
             y[n + nn] - y[nn] == -y[2 * n + nn] + y[n + nn]) {
    i = m % (2 * n);
    if (i < 100) i += 2 * n;
    rx = x[i];
    ry = y[i];
  } else
    n /= 0;
  printf("%I64d %I64d\n", rx, ry);
  return 0;
}

```