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: import java.io.*;import java.lang.*;import java.util.*;
  //* --> number of prime numbers less then or equal to x are  -->  x/ln(x)
  //* --> String concatenation using the + operator within a loop should be avoided. Since the String object is immutable, each call for concatenation will
  // result in a new String object being created.
  // THE SIEVE USED HERE WILL RETURN A LIST CONTAINING ALL THE PRIME NUMBERS TILL N
   public class consum{static FastScanner sc;static PrintWriter pw;static class FastScanner {InputStreamReader is;BufferedReader br;StringTokenizer st;
  public FastScanner() {is = new InputStreamReader(System.in);br = new BufferedReader(is);}
  String next() throws Exception {while (st == null || !st.hasMoreElements())st = new StringTokenizer(br.readLine());
  return st.nextToken();}int nextInt() throws Exception {return Integer.parseInt(next());}long nextLong() throws Exception {
  return Long.parseLong(next());}int[] readArray(int num) throws Exception {int arr[]=new int[num];
  for(int i=0;i<num;i++)arr[i]=nextInt();return arr;}String nextLine() throws Exception {return br.readLine();
  }} public static boolean power_of_two(int a){if((a&(a-1))==0){ return true;}return false;}
  static boolean PS(double x){if (x >= 0) {double i= Math.sqrt(x);if(i%1!=0){
  return false;}return ((i * i) == x);}return false;}public static int[] ia(int n){int ar[]=new int[n];
  return ar;}public static long[] la(int n){long ar[]=new long[n];return ar;}
  public static void print(int ans,int t){System.out.println("Case"+" "+"#"+t+":"+" "+ans);}
  static long mod=1000000007;static int max=Integer.MIN_VALUE;static int min=Integer.MAX_VALUE;
  public static void sort(long[] arr){//because Arrays.sort() uses quicksort which is dumb
  //Collections.sort() uses merge sort
  ArrayList<Long> ls = new ArrayList<Long>();for(long x: arr)ls.add(x);Collections.sort(ls);
  for(int i=0; i < arr.length; i++)arr[i] = ls.get(i);}public static long fciel(long a, long b) {if (a == 0)  return 0;return (a - 1) / b + 1;}
   static boolean[] is_prime = new boolean[1000001];static ArrayList<Integer> list = new ArrayList<>();
  static long n = 1000000;public static void sieve() {Arrays.fill(is_prime, true);
  is_prime[0] = is_prime[1] = false;for (int i = 2; i * i <= n; i++) {
  if (is_prime[i]) {for (int j = i * i; j <= n; j += i)is_prime[j] = false;}}for (int i = 2; i <= n; i++) {
  if (is_prime[i]) {list.add(i);}}}
  
                          // ----------   NCR   ---------- \
  
  static int NC=100005;
  static long inv[]=new long[NC];
  static long fac_inv[]=new long[NC];
  static long fac[]=new long[NC];public static void initialize()
  {
      long MOD=mod;
     int  i;
      inv[1]=1;
      for(i=2;i<=NC-2;i++)
          inv[i]=(MOD-MOD/i)*inv[(int)MOD%i]%MOD; 
      fac[0]=fac[1]=1;
      for(i=2;i<=NC-2;i++)
          fac[i]=i*fac[i-1]%MOD;
      fac_inv[0]=fac_inv[1]=1;
      for(i=2;i<=NC-2;i++)
          fac_inv[i]=inv[i]*fac_inv[i-1]%MOD;
  }
  public static long  ncr(int  n,int  r)
  {
      long MOD=mod;
      if(n<r) return 0;
      return (fac[n]*fac_inv[r]%MOD)*fac_inv[n-r]%MOD;
  }
                          // ----------   NCR   ---------- \
                     
                         // ----------   FACTORS --------  \
  static int div[][] = new int[1000001][];
  public static void factors()
  {
    int divCnt[] = new int[1000001];
                         
    for(int i = 1000000; i >= 1; --i) {
    for(int j = i; j <= 1000000; j += i)
    divCnt[j]++;
    }
                   
                     
    for(int i = 1; i <= 1000000; ++i)
    div[i] = new int[divCnt[i]];
                   
    int ptr[] = new int[1000001];
    for(int i = 1000000; i >= 1; --i) {
    for(int j = i; j <= 1000000; j += i)
    div[j][ptr[j]++] = i;
      }   
  }    
                      // ----------   FACTORS --------  \
                          
  public static void main(String args[]) throws java.lang.Exception {
  sc = new FastScanner();pw = new PrintWriter(System.out);StringBuilder s = new StringBuilder();
  int t=sc.nextInt();
  while(t-->0)
  {
          long n=sc.nextLong();
          long x=n-1;
          x*=-1;
          s.append(x+" "+n);
  if(t>0)
  {
      s.append("\n");
  }}
  pw.print(s);pw.close();}}
  