description: 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.
solution: #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;
  }
  