description: Polycarp likes squares and cubes of positive integers. Here is the beginning of the sequence of numbers he likes: 1, 4, 8, 9, ....
  
  For a given number n, count the number of integers from 1 to n that Polycarp likes. In other words, find the number of such x that x is a square of a positive integer number or a cube of a positive integer number (or both a square and a cube simultaneously).
  
  Input
  
  The first line contains an integer t (1 ≤ t ≤ 20) — the number of test cases.
  
  Then t lines contain the test cases, one per line. Each of the lines contains one integer n (1 ≤ n ≤ 10^9).
  
  Output
  
  For each test case, print the answer you are looking for — the number of integers from 1 to n that Polycarp likes.
  
  Example
  
  Input
  
  
  6
  10
  1
  25
  1000000000
  999999999
  500000000
  
  
  Output
  
  
  4
  1
  6
  32591
  32590
  23125
solution: //jai Shree Krishna
  import java.io.BufferedReader;
  import java.io.BufferedWriter;
  import java.io.IOException;
  import java.util.Collections;
  import java.io.InputStreamReader;
  import java.io.PrintWriter;
  import java.util.Comparator;
  import java.util.HashSet;
  import java.io.OutputStreamWriter;
  import java.util.ArrayList;
  import java.util.StringTokenizer;
  public class A{
  // author: Tarun Verma
  	static FastScanner sc = new FastScanner();
  	static int inf = Integer.MAX_VALUE;
  	static long mod = 1000000007;
  	static BufferedWriter output = new BufferedWriter(
  			new OutputStreamWriter(System.out));
  	static PrintWriter out=new PrintWriter(System.out);
  	/* Common Mistakes By Me
  	 * make sure to read the bottom part of question
  	 * special cases (n=1?)
  	 * In Game Theory Check your solution and consider all the solutions
  	 * Always initialise value to the declare array in local scope
  	 * don't use debugs in interactive problems
  	 * Always Reset vis,adj array upto n+1 otherwise can cause TLE
  	 */
  	public static void solve() {
  		
  		
  		long n = sc.nextLong();
  		
  		HashSet<Long> set = new HashSet<>();
  		long k = 1;
  		while(k*k <= n) {
  			set.add(k*k);
  			k++;
  		}
  		k = 1;
  		while(k*k*k <= n) {
  			set.add(k*k*k);
  			k++;
  		}
  		System.out.println(set.size());
  		
  		
  	}
  	public static void main(String[] args) {
  		int t = 1;
  		t = sc.nextInt();
  		outer: for (int tt = 0; tt < t; tt++) {
  			solve();
  		}
  	}
  	
  ////////////////////////////////////////////////////////////////////////////////////
  ////////////////////DO NOT BELOW THIS LINE //////////////////////////////////
  ////////////////////////////////////////////////////////////////////////////////////
  	static Comparator<pair> comp = new Comparator<pair>() {
  		@Override
  		public int compare(pair o1, pair o2) {
  			if(o1.fr == o2.fr) {
  				return o1.sc - o2.sc;
  			}
  			return o1.fr - o2.fr;
  		}
  	};
  	static int max(int a, int b) { return Math.max(a, b);} 
  	static int min(int a, int b) {return Math.min(a, b);}
  	static long max(long a, long b){return Math.max(a, b);}
  	static long min(long a, long b) {return Math.min(a, b);}
  	static void sort(int arr[]) {
  		ArrayList<Integer> a = new ArrayList<Integer>();
  		for(int i: arr) a.add(i);
  		Collections.sort(a);
  		for(int i=0;i<arr.length;i++) arr[i] = a.get(i);
  	}
  	static void sort(long arr[]) {
  		ArrayList<Long> a = new ArrayList<Long>();
  		for(long i: arr) a.add(i);
  		Collections.sort(a);
  		for(int i=0;i<arr.length;i++) arr[i] = a.get(i);
  	}
  	static int abs(int a) {return Math.abs(a);}
  	static long abs(long a) {return Math.abs(a);}
  	static int gcd(int a, int b) {
  		if (b == 0)
  			return a;
  		return gcd(b, a % b);
  	}
  	static long gcd(long a, long b) {
  		if (b == 0)
  			return a;
  		return gcd(b, a % b);
  	}
  	
  	static class FastScanner {
  		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  		StringTokenizer st = new StringTokenizer("");
  		
  		String next() {
  			while (!st.hasMoreTokens())
  				try {
  					st = new StringTokenizer(br.readLine());
  				} catch (IOException e) {
  					e.printStackTrace();
  				}
  			return st.nextToken();
  		}
  		int nextInt() {
  			return Integer.parseInt(next());
  		}
  		int[] readArray(int n) {
  			int[] a = new int[n];
  			for (int i = 0; i < n; i++)
  				a[i] = nextInt();
  			return a;
  		}
  		long[] readLongArray(int n) {
  			long[] a = new long[n];
  			for (int i = 0; i < n; i++)
  				a[i] = nextLong();
  			return a;
  		}
  		
  		int[][] read2dArray(int n, int m) {
  			int arr[][] = new int[n][m];
  			for (int i = 0; i < n; i++) {
  				for (int j = 0; j < m; j++) {
  					arr[i][j] = nextInt();
  				}
  			}
  			return arr;
  		}
  		
  		ArrayList<Integer> readArrayList(int n) {
  			ArrayList<Integer> arr = new ArrayList<Integer>();
  			for (int i = 0; i < n; i++) {
  				int a = nextInt();
  				arr.add(a);
  			}
  			return arr;
  		}
  		
  		long nextLong() {
  			return Long.parseLong(next());
  		}
  	}
  	
  	static class pair {
  		int fr, sc;
  		
  		pair(int fr, int sc) {
  			this.fr = fr;
  			this.sc = sc;
  		}
  	}
  	
  ////////////////////////////////////////////////////////////////////////////////////	
  	
  }
  