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.BufferedReader;
  import java.io.InputStreamReader;
  import java.util.StringTokenizer;
  import java.util.*;
  import java.io.*;
  public class Main {
      // Graph
      // prefix sums
      //inputs
  
      public static void main(String args[])throws Exception{
          Input sc=new Input();
          precalculates p=new precalculates();
          StringBuilder sb=new StringBuilder();
          int t=sc.readInt();
          for(int f=0;f<t;f++){
              long n=sc.readLong();
             
                  sb.append(-(n-1)+" "+(n)+"\n");
              
          }
          //System.out.println(((long)2449490l*(long)2449491l)/2);
          System.out.print(sb);
      }
      public static long fun(long key,long l,long r) {
          long mid;
          long ans;
  
          while (l <= r) {
              mid = l + (r - l) / 2;
              ans = (mid * (mid + 1)) / 2;
              //System.out.println(mid+" "+ans);
              if(ans==key)
                  return mid;
              if (ans < key && (key <(ans + mid+1))) {
                  return mid+1;
              }
  
              if (ans > key) {
                  r = mid-1 ;
              } else if (ans < key) {
                  l = mid+1;
              } else {
                  return mid;
              }
  
          }
          return -1;
      }
  }
  class Input{
      BufferedReader br;
      StringTokenizer st;
      Input(){
          br=new BufferedReader(new InputStreamReader(System.in));
          st=new StringTokenizer("");
      }
      public int[] readArray() throws Exception{
          st=new StringTokenizer(br.readLine());
          int a[]=new int[st.countTokens()];
          for(int i=0;i<a.length;i++){
              a[i]=Integer.parseInt(st.nextToken());
          }
          return a;
      }
      public long[] readArrayLong() throws Exception{
          st=new StringTokenizer(br.readLine());
          long a[]=new long[st.countTokens()];
          for(int i=0;i<a.length;i++){
              a[i]=Long.parseLong(st.nextToken());
          }
          return a;
      }
      public int readInt() throws Exception{
          st=new StringTokenizer(br.readLine());
          return Integer.parseInt(st.nextToken());
      }
      public long readLong() throws Exception{
          st=new StringTokenizer(br.readLine());
          return Long.parseLong(st.nextToken());
      }
      public String readString() throws Exception{
          return br.readLine();
      }
      public int[][] read2dArray(int n,int m)throws Exception{
          int a[][]=new int[n][m];
          for(int i=0;i<n;i++){
              st=new StringTokenizer(br.readLine());
              for(int j=0;j<m;j++){
                  a[i][j]=Integer.parseInt(st.nextToken());
              }
          }
          return a;
      }
  }
  class precalculates{
      public int[] prefixSumOneDimentional(int a[]){
          int n=a.length;
          int dp[]=new int[n];
          for(int i=0;i<n;i++){
              if(i==0)
                  dp[i]=a[i];
              else
                  dp[i]=dp[i-1]+a[i];
          }
          return dp;
      }
      public int[] postSumOneDimentional(int a[]) {
          int n = a.length;
          int dp[] = new int[n];
          for (int i = n - 1; i >= 0; i--) {
              if (i == n - 1)
                  dp[i] = a[i];
              else
                  dp[i] = dp[i + 1] + a[i];
          }
          return dp;
      }
      public int[][] prefixSum2d(int a[][]){
          int n=a.length;int m=a[0].length;
          int dp[][]=new int[n+1][m+1];
          for(int i=1;i<=n;i++){
              for(int j=1;j<=m;j++){
                  dp[i][j]=a[i-1][j-1]+dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1];
              }
          }
          return dp;
      }
  
  }
  class GraphInteger{
      HashMap<Integer,vertex> vtces;
      class vertex{
          HashMap<Integer,Integer> children;
          public vertex(){
              children=new HashMap<>();
          }
      }
      public GraphInteger(){
          vtces=new HashMap<>();
      }
      public void addVertex(int a){
          vtces.put(a,new vertex());
      }
      public void addEdge(int a,int b,int cost){
          if(!vtces.containsKey(a)){
              vtces.put(a,new vertex());
          }
          if(!vtces.containsKey(b)){
              vtces.put(b,new vertex());
          }
          vtces.get(a).children.put(b,cost);
  //        vtces.get(b).children.put(a,cost);
      }
      public boolean isCyclicDirected(){
          boolean isdone[]=new boolean[vtces.size()+1];
          boolean check[]=new boolean[vtces.size()+1];
          for(int i=1;i<=vtces.size();i++) {
              if (!isdone[i] && isCyclicDirected(i,isdone, check)) {
                  return true;
              }
          }
          return false;
      }
      private boolean isCyclicDirected(int i,boolean isdone[],boolean check[]){
          if(check[i])
              return true;
          if(isdone[i])
              return false;
          check[i]=true;
          isdone[i]=true;
          Set<Integer> set=vtces.get(i).children.keySet();
          for(Integer ii:set){
              if(isCyclicDirected(ii,isdone,check))
                  return true;
          }
          check[i]=false;
          return false;
      }
  }
  
  
  
  