import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.util.StringTokenizer; import java.math.BigInteger; import java.util.Collections; import java.util.Arrays; public class Main { private static StringTokenizer tokenizer; private static BufferedReader bf; private static PrintWriter out; private static int nextInt() throws IOException { return Integer.parseInt(nextToken()); } private static String nextToken() throws IOException { while(tokenizer == null || !tokenizer.hasMoreTokens()) { tokenizer = new StringTokenizer(bf.readLine()); } return tokenizer.nextToken(); } public static void main(String[] args) throws IOException { bf = new BufferedReader(new InputStreamReader(System.in)); tokenizer = null; out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out))); int ntest = nextInt(); while (ntest-- > 0) { int n = nextInt(); BigInteger[] a = new BigInteger[n]; int zero = 0; for (int i = 0; i < n; ++i) { a[i] = new BigInteger(nextToken()); if (a[i].equals(BigInteger.ZERO)) zero++; } if (n == 1) out.println("Yes"); else { if (zero > 0 && zero < n) { out.println("No"); } else { boolean bad = false; for (int i = 1; i < n - 1; ++i) { BigInteger x = a[i - 1].multiply(a[i + 1]); BigInteger y = a[i].multiply(a[i]); if (!x.equals(y)) { bad = true; break; } } if (bad) out.println("No"); else out.println("Yes"); } } } out.close(); } }