#include <bits/stdc++.h>
using namespace std;
void read(int &x) {
  int ret = 0;
  char c = getchar(), last = ' ';
  while (!isdigit(c)) last = c, c = getchar();
  while (isdigit(c)) ret = (ret << 1) + (ret << 3) + c - '0', c = getchar();
  x = last == '-' ? -ret : ret;
}
void readll(long long &x) {
  long long ret = 0;
  char c = getchar(), last = ' ';
  while (!isdigit(c)) last = c, c = getchar();
  while (isdigit(c)) ret = (ret << 1) + (ret << 3) + c - '0', c = getchar();
  x = last == '-' ? -ret : ret;
}
int qpow(int x, int p, int mod) {
  int ret = 1;
  for (; p; x = 1ll * x * x % mod, p >>= 1)
    if (p & 1) ret = 1ll * ret * x % mod;
  return ret;
}
long long qpowl(long long x, long long p, long long mod) {
  long long ret = 1;
  for (; p; x = x * x % mod, p >>= 1)
    if (p & 1) ret = ret * x % mod;
  return ret;
}
long long qmul(long long a, long long b, int mod) {
  if (a < b) swap(a, b);
  long long ret = 0;
  for (; b; a = a * 2 % mod, b >>= 1)
    if (b & 1) ret = (ret + a) % mod;
  return ret;
}
long long qpowl_qmul(long long x, long long p, long long mod) {
  long long ret = 1;
  for (; p; x = qmul(x, x, mod), p >>= 1)
    if (p & 1) ret = qmul(ret, x, mod);
  return ret;
}
int gcd(int a, int b) { return b ? gcd(b, a % b) : a; }
long long gcdll(long long a, long long b) { return b ? gcdll(b, a % b) : a; }
int split_int(int x, int *s) {
  int cnt = 0;
  while (x) {
    s[++cnt] = x % 10;
    x /= 10;
  }
  return cnt;
}
int T;
long long n;
int main() {
  read(T);
  while (T--) {
    readll(n);
    long long res = 1;
    while (n % 2 == 0) res <<= 1, n >>= 1;
    cout << (n == 1 ? -1 : 1) * (res - (n + (n == 1)) / 2) << ' ' << res + n / 2
         << '\n';
  }
  return 0;
}

### Prompt

Your challenge is to write a Cpp solution to the following problem:

Theofanis has a riddle for you and if you manage to solve it, he will give you a Cypriot snack halloumi for free (Cypriot cheese).

You are given an integer n. You need to find two integers l and r such that -10^{18} ≤ l < r ≤ 10^{18} and l + (l + 1) + … + (r - 1) + r = n.

Input

The first line contains a single integer t (1 ≤ t ≤ 10^4) — the number of test cases.

The first and only line of each test case contains a single integer n (1 ≤ n ≤ 10^{18}).

Output

For each test case, print the two integers l and r such that -10^{18} ≤ l < r ≤ 10^{18} and l + (l + 1) + … + (r - 1) + r = n. 

It can be proven that an answer always exists. If there are multiple answers, print any.

Example

Input


7
1
2
3
6
100
25
3000000000000


Output


0 1
-1 2 
1 2 
1 3 
18 22
-2 7
999999999999 1000000000001

Note

In the first test case, 0 + 1 = 1.

In the second test case, (-1) + 0 + 1 + 2 = 2.

In the fourth test case, 1 + 2 + 3 = 6.

In the fifth test case, 18 + 19 + 20 + 21 + 22 = 100.

In the sixth test case, (-2) + (-1) + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 = 25.

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
void read(int &x) {
  int ret = 0;
  char c = getchar(), last = ' ';
  while (!isdigit(c)) last = c, c = getchar();
  while (isdigit(c)) ret = (ret << 1) + (ret << 3) + c - '0', c = getchar();
  x = last == '-' ? -ret : ret;
}
void readll(long long &x) {
  long long ret = 0;
  char c = getchar(), last = ' ';
  while (!isdigit(c)) last = c, c = getchar();
  while (isdigit(c)) ret = (ret << 1) + (ret << 3) + c - '0', c = getchar();
  x = last == '-' ? -ret : ret;
}
int qpow(int x, int p, int mod) {
  int ret = 1;
  for (; p; x = 1ll * x * x % mod, p >>= 1)
    if (p & 1) ret = 1ll * ret * x % mod;
  return ret;
}
long long qpowl(long long x, long long p, long long mod) {
  long long ret = 1;
  for (; p; x = x * x % mod, p >>= 1)
    if (p & 1) ret = ret * x % mod;
  return ret;
}
long long qmul(long long a, long long b, int mod) {
  if (a < b) swap(a, b);
  long long ret = 0;
  for (; b; a = a * 2 % mod, b >>= 1)
    if (b & 1) ret = (ret + a) % mod;
  return ret;
}
long long qpowl_qmul(long long x, long long p, long long mod) {
  long long ret = 1;
  for (; p; x = qmul(x, x, mod), p >>= 1)
    if (p & 1) ret = qmul(ret, x, mod);
  return ret;
}
int gcd(int a, int b) { return b ? gcd(b, a % b) : a; }
long long gcdll(long long a, long long b) { return b ? gcdll(b, a % b) : a; }
int split_int(int x, int *s) {
  int cnt = 0;
  while (x) {
    s[++cnt] = x % 10;
    x /= 10;
  }
  return cnt;
}
int T;
long long n;
int main() {
  read(T);
  while (T--) {
    readll(n);
    long long res = 1;
    while (n % 2 == 0) res <<= 1, n >>= 1;
    cout << (n == 1 ? -1 : 1) * (res - (n + (n == 1)) / 2) << ' ' << res + n / 2
         << '\n';
  }
  return 0;
}

```