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: 
  import java.io.BufferedOutputStream;
  import java.io.BufferedReader;
  import java.io.IOException;
  import java.io.InputStreamReader;
  import java.io.PrintWriter;
  import java.math.BigInteger;
  import java.sql.Time;
  import java.util.ArrayList;
  import java.util.Arrays;
  import java.util.Collections;
  import java.util.Comparator;
  import java.util.Date;
  import java.util.Deque;
  import java.util.HashMap;
  import java.util.HashSet;
  import java.util.LinkedList;
  import java.util.List;
  import java.util.Map;
  import java.util.PriorityQueue;
  import java.util.Queue;
  import java.util.Scanner;
  import java.util.Stack;
  import java.util.StringTokenizer;
  import java.util.TreeMap;
   
   
  public class Practice1 {
  	
  	static long[] sort(long[] arr) {
  		int n=arr.length;
  		ArrayList<Long> al=new ArrayList<>();
  		for(int i=0;i<n;i++) {
  			al.add(arr[i]);
  		}
  		Collections.sort(al);
  		
  		for(int i=0;i<n;i++) {
  			arr[i]=al.get(i);
  		}
  		return arr;
  	}
  	public static void main (String[] args) {
  		PrintWriter out = new PrintWriter(new BufferedOutputStream(System.out));
  		// out.print();
  		//out.println();
  		FastReader sc=new FastReader();
  		int t=sc.nextInt();
  		while(t-->0) {
  			long n=sc.nextLong();
  			HashSet<Long> s=new HashSet<>();
  			for(long i=1;i*i<=n;i++) {
  				if(i*i<=n) {
  					s.add(i*i);
  					if(i*i*i<=n) {
  						s.add(i*i*i);
  					}
  				}
  				
  			}
  			out.println(s.size());
  		}
  		out.close();
  	}
  	
  	   
  	static class FastReader {
  	     BufferedReader br;
  	     StringTokenizer st;
   
  	     public FastReader()
  	     {
  	         br = new BufferedReader(
  	             new InputStreamReader(System.in));
  	     }
   
  	     String next()
  	     {
  	         while (st == null || !st.hasMoreElements()) {
  	             try {
  	                 st = new StringTokenizer(br.readLine());
  	             }
  	             catch (IOException e) {
  	                 e.printStackTrace();
  	             }
  	         }
  	         return st.nextToken();
  	     }
   
  	     int nextInt() { return Integer.parseInt(next()); }
   
  	     long nextLong() { return Long.parseLong(next()); }
   
  	     double nextDouble()
  	     {
  	         return Double.parseDouble(next());
  	     }
   
  	     String nextLine()
  	     {
  	         String str = "";
  	         try {
  	             str = br.readLine();
  	         }
  	         catch (IOException e) {
  	             e.printStackTrace();
  	         }
  	         return str;
  	     }
  	 }
   
  }
   
  