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.util.*;
  import java.io.*;
  
  public class squaresAndCubes {
      static InputReader ir = new InputReader(System.in);
      static PrintWriter pw = new PrintWriter(System.out);
      public static void main(String[] args) {
          int t = ir.nextInt();
  
          for (int i = 0; i < t; i++) {
              solve();
          }
  
          pw.close();
      }
  
      public static void solve() {
          long n = ir.nextLong();
          int sq = (int) Math.floor(Math.sqrt(n));
          int cb = (int) Math.floor(Math.cbrt(n));
          ArrayList<Integer> squares = new ArrayList<>();
          for (int i = 0; i <= sq; i++) {
              squares.add(i*i);
          }
  
          ArrayList<Integer> cubes = new ArrayList<>();
          for (int i = 0; i <= cb; i++) {
              squares.add(i*i*i);
          }
  
          HashSet<Integer> nums = new HashSet<>();
          nums.addAll(squares);
          nums.addAll(cubes);
  
          pw.println(nums.size() - 1);
      }
  
      static class InputReader {
          BufferedReader reader;
          StringTokenizer tokenizer;
  
          public InputReader(InputStream stream) {
              reader = new BufferedReader(new InputStreamReader(stream), 32768);
              tokenizer = null;
          }
  
          String next() {
              while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                  try {
                      tokenizer = new StringTokenizer(reader.readLine());
                  } catch (IOException e) {
                      throw new RuntimeException(e);  
                  }
              }
              return tokenizer.nextToken();
          }
  
          public int nextInt() {
              return Integer.parseInt(next());
          }
  
          public long nextLong() {
              return Long.parseLong(next());
          }
  
          public double nextDouble() {
              return Double.parseDouble(next());
          }
      }
  
      public static int[] readArr(int N) {
          int[] arr = new int[N];
          for (int i = 0; i < N; i++) {
              arr[i] = ir.nextInt();
          }
  
          return arr;
      }
  }
  