#include <bits/stdc++.h>
bool debug = false;
using namespace std;
long long convertToNum(string s) {
  long long val = 0;
  for (int i = 0; i < s.size(); i++) val = val * 10 + s[i] - '0';
  return val;
}
string convertToString(long long a) {
  string res = "";
  if (!a) return "0";
  while (a) {
    res = (char)(a % 10 + 48) + res;
    a /= 10;
  }
  return res;
}
long long GCD(long long x, long long y) {
  if (!x) return y;
  if (!y) return x;
  if (x == y) return x;
  if (x < y)
    return GCD(x, y % x);
  else
    return GCD(x % y, y);
}
long long POW(long long x, long long y, long long Base) {
  if (!y) return 1;
  long long u = POW(x, y / 2, Base);
  u = (u * u) % Base;
  if (y & 1)
    return (u * x) % Base;
  else
    return u;
}
long long S, Sum;
long long n, m, a, b, A[100003], B[100003];
int main() {
  cin >> n >> m;
  cin >> a >> b;
  m--;
  for (int i = 0; i < n; i++) cin >> A[i] >> B[i];
  long long d = m % (2 * n);
  bool Flag = true;
  for (int i = 2 * n - 1; i >= 0; i--) {
    if (Flag)
      Sum += 2 * A[i % n];
    else
      Sum -= 2 * A[i % n];
    Flag = !Flag;
  }
  Flag = true;
  for (int i = d; i >= 0; i--) {
    if (Flag)
      S += 2 * A[i % n];
    else
      S -= 2 * A[i % n];
    Flag = !Flag;
  }
  if (Flag)
    cout << S + m / (2 * n) * Sum + a;
  else
    cout << S - m / (2 * n) * Sum - a;
  cout << " ";
  d = m % (2 * n);
  Flag = true;
  Sum = 0, S = 0;
  for (int i = 2 * n - 1; i >= 0; i--) {
    if (Flag)
      Sum += 2 * B[i % n];
    else
      Sum -= 2 * B[i % n];
    Flag = !Flag;
  }
  Flag = true;
  for (int i = d; i >= 0; i--) {
    if (Flag)
      S += 2 * B[i % n];
    else
      S -= 2 * B[i % n];
    Flag = !Flag;
  }
  if (Flag)
    cout << S + m / (2 * n) * Sum + b;
  else
    cout << S - m / (2 * n) * Sum - b;
  return 0;
}

### Prompt

In Cpp, your task is to solve 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>
bool debug = false;
using namespace std;
long long convertToNum(string s) {
  long long val = 0;
  for (int i = 0; i < s.size(); i++) val = val * 10 + s[i] - '0';
  return val;
}
string convertToString(long long a) {
  string res = "";
  if (!a) return "0";
  while (a) {
    res = (char)(a % 10 + 48) + res;
    a /= 10;
  }
  return res;
}
long long GCD(long long x, long long y) {
  if (!x) return y;
  if (!y) return x;
  if (x == y) return x;
  if (x < y)
    return GCD(x, y % x);
  else
    return GCD(x % y, y);
}
long long POW(long long x, long long y, long long Base) {
  if (!y) return 1;
  long long u = POW(x, y / 2, Base);
  u = (u * u) % Base;
  if (y & 1)
    return (u * x) % Base;
  else
    return u;
}
long long S, Sum;
long long n, m, a, b, A[100003], B[100003];
int main() {
  cin >> n >> m;
  cin >> a >> b;
  m--;
  for (int i = 0; i < n; i++) cin >> A[i] >> B[i];
  long long d = m % (2 * n);
  bool Flag = true;
  for (int i = 2 * n - 1; i >= 0; i--) {
    if (Flag)
      Sum += 2 * A[i % n];
    else
      Sum -= 2 * A[i % n];
    Flag = !Flag;
  }
  Flag = true;
  for (int i = d; i >= 0; i--) {
    if (Flag)
      S += 2 * A[i % n];
    else
      S -= 2 * A[i % n];
    Flag = !Flag;
  }
  if (Flag)
    cout << S + m / (2 * n) * Sum + a;
  else
    cout << S - m / (2 * n) * Sum - a;
  cout << " ";
  d = m % (2 * n);
  Flag = true;
  Sum = 0, S = 0;
  for (int i = 2 * n - 1; i >= 0; i--) {
    if (Flag)
      Sum += 2 * B[i % n];
    else
      Sum -= 2 * B[i % n];
    Flag = !Flag;
  }
  Flag = true;
  for (int i = d; i >= 0; i--) {
    if (Flag)
      S += 2 * B[i % n];
    else
      S -= 2 * B[i % n];
    Flag = !Flag;
  }
  if (Flag)
    cout << S + m / (2 * n) * Sum + b;
  else
    cout << S - m / (2 * n) * Sum - b;
  return 0;
}

```