#include <bits/stdc++.h>
using namespace std;
namespace io {
char *iS, *iT, ibuff[(1 << 21 | 1)], obuff[(1 << 21 | 1)],
    *oS = obuff, *oT = oS + (1 << 21 | 1) - 1, fu[110], c;
int fr;
template <class Type>
inline void read(Type &x) {
  x = 0;
  Type y = 1;
  for (c = (io::iS == io::iT
                ? (io::iT = (io::iS = io::ibuff) +
                            fread(io::ibuff, 1, (1 << 21 | 1), stdin),
                  (io::iS == io::iT ? EOF : *io::iS++))
                : *io::iS++);
       (c > '9' || c < '0') && c != '-';
       c = (io::iS == io::iT
                ? (io::iT = (io::iS = io::ibuff) +
                            fread(io::ibuff, 1, (1 << 21 | 1), stdin),
                  (io::iS == io::iT ? EOF : *io::iS++))
                : *io::iS++))
    ;
  c == '-' ? y = -1 : x = (c & 15);
  for (c = (io::iS == io::iT
                ? (io::iT = (io::iS = io::ibuff) +
                            fread(io::ibuff, 1, (1 << 21 | 1), stdin),
                  (io::iS == io::iT ? EOF : *io::iS++))
                : *io::iS++);
       c >= '0' && c <= '9';
       c = (io::iS == io::iT
                ? (io::iT = (io::iS = io::ibuff) +
                            fread(io::ibuff, 1, (1 << 21 | 1), stdin),
                  (io::iS == io::iT ? EOF : *io::iS++))
                : *io::iS++))
    x = x * 10 + (c & 15);
  x *= y;
}
inline void reads(char *x) {
  for (c = (io::iS == io::iT
                ? (io::iT = (io::iS = io::ibuff) +
                            fread(io::ibuff, 1, (1 << 21 | 1), stdin),
                  (io::iS == io::iT ? EOF : *io::iS++))
                : *io::iS++);
       c == ' ' || c == '\n';
       c = (io::iS == io::iT
                ? (io::iT = (io::iS = io::ibuff) +
                            fread(io::ibuff, 1, (1 << 21 | 1), stdin),
                  (io::iS == io::iT ? EOF : *io::iS++))
                : *io::iS++))
    ;
  for (; c != ' ' && c != '\n' && c != EOF;
       *x = c,
       c = (io::iS == io::iT
                ? (io::iT = (io::iS = io::ibuff) +
                            fread(io::ibuff, 1, (1 << 21 | 1), stdin),
                  (io::iS == io::iT ? EOF : *io::iS++))
                : *io::iS++),
       ++x)
    ;
}
template <class Type>
inline void print(Type x, char text = '\n') {
  if (x < 0)
    (io::oS == io::oT ? (fwrite(io::obuff, 1, io::oS - io::obuff, stdout),
                         io::oS = io::obuff, (*io::oS++ = '-'))
                      : *io::oS++ = '-'),
        x *= -1;
  if (x == 0)
    (io::oS == io::oT ? (fwrite(io::obuff, 1, io::oS - io::obuff, stdout),
                         io::oS = io::obuff, (*io::oS++ = '0'))
                      : *io::oS++ = '0');
  while (x) fu[++fr] = x % 10 + '0', x /= 10;
  while (fr)
    (io::oS == io::oT ? (fwrite(io::obuff, 1, io::oS - io::obuff, stdout),
                         io::oS = io::obuff, (*io::oS++ = fu[fr--]))
                      : *io::oS++ = fu[fr--]);
  (io::oS == io::oT ? (fwrite(io::obuff, 1, io::oS - io::obuff, stdout),
                       io::oS = io::obuff, (*io::oS++ = text))
                    : *io::oS++ = text);
}
inline void prints(char *x, char *y = NULL, char text = '\n') {
  for (; *x && x != y; ++x)
    (io::oS == io::oT ? (fwrite(io::obuff, 1, io::oS - io::obuff, stdout),
                         io::oS = io::obuff, (*io::oS++ = *x))
                      : *io::oS++ = *x);
  (io::oS == io::oT ? (fwrite(io::obuff, 1, io::oS - io::obuff, stdout),
                       io::oS = io::obuff, (*io::oS++ = text))
                    : *io::oS++ = text);
}
}  // namespace io
using io::print;
using io::prints;
using io::read;
using io::reads;
int n, x[100001], y[100001], xx, yy;
long long j;
signed main() {
  read(n), read(j), read(xx), read(yy);
  j %= (n * 2);
  for (int i = 1; i <= n; i++) read(x[i]), read(y[i]);
  for (int i = 1; i <= j; i++) {
    xx = 2 * x[(i - 1) % n + 1] - xx, yy = 2 * y[(i - 1) % n + 1] - yy;
  }
  print(xx, ' '), print(yy);
  fwrite(io::obuff, 1, io::oS - io::obuff, stdout);
  return 0;
  ;
}

### Prompt

Your challenge is to write 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;
namespace io {
char *iS, *iT, ibuff[(1 << 21 | 1)], obuff[(1 << 21 | 1)],
    *oS = obuff, *oT = oS + (1 << 21 | 1) - 1, fu[110], c;
int fr;
template <class Type>
inline void read(Type &x) {
  x = 0;
  Type y = 1;
  for (c = (io::iS == io::iT
                ? (io::iT = (io::iS = io::ibuff) +
                            fread(io::ibuff, 1, (1 << 21 | 1), stdin),
                  (io::iS == io::iT ? EOF : *io::iS++))
                : *io::iS++);
       (c > '9' || c < '0') && c != '-';
       c = (io::iS == io::iT
                ? (io::iT = (io::iS = io::ibuff) +
                            fread(io::ibuff, 1, (1 << 21 | 1), stdin),
                  (io::iS == io::iT ? EOF : *io::iS++))
                : *io::iS++))
    ;
  c == '-' ? y = -1 : x = (c & 15);
  for (c = (io::iS == io::iT
                ? (io::iT = (io::iS = io::ibuff) +
                            fread(io::ibuff, 1, (1 << 21 | 1), stdin),
                  (io::iS == io::iT ? EOF : *io::iS++))
                : *io::iS++);
       c >= '0' && c <= '9';
       c = (io::iS == io::iT
                ? (io::iT = (io::iS = io::ibuff) +
                            fread(io::ibuff, 1, (1 << 21 | 1), stdin),
                  (io::iS == io::iT ? EOF : *io::iS++))
                : *io::iS++))
    x = x * 10 + (c & 15);
  x *= y;
}
inline void reads(char *x) {
  for (c = (io::iS == io::iT
                ? (io::iT = (io::iS = io::ibuff) +
                            fread(io::ibuff, 1, (1 << 21 | 1), stdin),
                  (io::iS == io::iT ? EOF : *io::iS++))
                : *io::iS++);
       c == ' ' || c == '\n';
       c = (io::iS == io::iT
                ? (io::iT = (io::iS = io::ibuff) +
                            fread(io::ibuff, 1, (1 << 21 | 1), stdin),
                  (io::iS == io::iT ? EOF : *io::iS++))
                : *io::iS++))
    ;
  for (; c != ' ' && c != '\n' && c != EOF;
       *x = c,
       c = (io::iS == io::iT
                ? (io::iT = (io::iS = io::ibuff) +
                            fread(io::ibuff, 1, (1 << 21 | 1), stdin),
                  (io::iS == io::iT ? EOF : *io::iS++))
                : *io::iS++),
       ++x)
    ;
}
template <class Type>
inline void print(Type x, char text = '\n') {
  if (x < 0)
    (io::oS == io::oT ? (fwrite(io::obuff, 1, io::oS - io::obuff, stdout),
                         io::oS = io::obuff, (*io::oS++ = '-'))
                      : *io::oS++ = '-'),
        x *= -1;
  if (x == 0)
    (io::oS == io::oT ? (fwrite(io::obuff, 1, io::oS - io::obuff, stdout),
                         io::oS = io::obuff, (*io::oS++ = '0'))
                      : *io::oS++ = '0');
  while (x) fu[++fr] = x % 10 + '0', x /= 10;
  while (fr)
    (io::oS == io::oT ? (fwrite(io::obuff, 1, io::oS - io::obuff, stdout),
                         io::oS = io::obuff, (*io::oS++ = fu[fr--]))
                      : *io::oS++ = fu[fr--]);
  (io::oS == io::oT ? (fwrite(io::obuff, 1, io::oS - io::obuff, stdout),
                       io::oS = io::obuff, (*io::oS++ = text))
                    : *io::oS++ = text);
}
inline void prints(char *x, char *y = NULL, char text = '\n') {
  for (; *x && x != y; ++x)
    (io::oS == io::oT ? (fwrite(io::obuff, 1, io::oS - io::obuff, stdout),
                         io::oS = io::obuff, (*io::oS++ = *x))
                      : *io::oS++ = *x);
  (io::oS == io::oT ? (fwrite(io::obuff, 1, io::oS - io::obuff, stdout),
                       io::oS = io::obuff, (*io::oS++ = text))
                    : *io::oS++ = text);
}
}  // namespace io
using io::print;
using io::prints;
using io::read;
using io::reads;
int n, x[100001], y[100001], xx, yy;
long long j;
signed main() {
  read(n), read(j), read(xx), read(yy);
  j %= (n * 2);
  for (int i = 1; i <= n; i++) read(x[i]), read(y[i]);
  for (int i = 1; i <= j; i++) {
    xx = 2 * x[(i - 1) % n + 1] - xx, yy = 2 * y[(i - 1) % n + 1] - yy;
  }
  print(xx, ' '), print(yy);
  fwrite(io::obuff, 1, io::oS - io::obuff, stdout);
  return 0;
  ;
}

```