description: You are given a sequence of n integers a_1,   a_2,   ...,   a_n.
  
  Does there exist a sequence of n integers b_1,   b_2,   ...,   b_n such that the following property holds?
  
    * For each 1 ≤ i ≤ n, there exist two (not necessarily distinct) indices j and k (1 ≤ j,   k ≤ n) such that a_i = b_j - b_k. 
  
  Input
  
  The first line contains a single integer t (1 ≤ t ≤ 20) — the number of test cases. Then t test cases follow.
  
  The first line of each test case contains one integer n (1 ≤ n ≤ 10).
  
  The second line of each test case contains the n integers a_1,   ...,   a_n (-10^5 ≤ a_i ≤ 10^5).
  
  Output
  
  For each test case, output a line containing YES if a sequence b_1,   ...,   b_n satisfying the required property exists, and NO otherwise.
  
  Example
  
  Input
  
  
  5
  5
  4 -7 -1 5 10
  1
  0
  3
  1 10 100
  4
  -3 2 10 2
  9
  25 -171 250 174 152 242 100 -205 -258
  
  
  Output
  
  
  YES
  YES
  NO
  YES
  YES
  
  Note
  
  In the first test case, the sequence b = [-9,   2,   1,   3,   -2] satisfies the property. Indeed, the following holds: 
  
    * a_1 = 4 = 2 - (-2) = b_2 - b_5; 
    * a_2 = -7 = -9 - (-2) = b_1 - b_5; 
    * a_3 = -1 = 1 - 2 = b_3 - b_2; 
    * a_4 = 5 = 3 - (-2) = b_4 - b_5; 
    * a_5 = 10 = 1 - (-9) = b_3 - b_1. 
  
  
  
  In the second test case, it is sufficient to choose b = [0], since a_1 = 0 = 0 - 0 = b_1 - b_1.
  
  In the third test case, it is possible to show that no sequence b of length 3 satisfies the property.
solution: import java.util.*;
  import java.io.*;
  
  public class Main {
      public static void main(String args[]) {
          new Main().run();
      }
  
      FastReader in = new FastReader();
      PrintWriter out = new PrintWriter(System.out);
      void run() {
          for(int q=ni();q>0;q--){
              work();
          }
          out.flush();
      }
  
      long mod = 1000000007;
      long gcd(long a, long b) {
          return a == 0 ? b : gcd(b % a, a);
      }
      long inf = Long.MAX_VALUE / 3;
      int[] A;
      int n;
      void work() {
          n=ni();
          A=nia(n);
          if(dfs(0,new ArrayList<Integer>())){
              out.println("YES");
              return;
          }
          out.println("NO");
      }
  
      private boolean dfs(int idx, List<Integer> list) {
          if(count(list)){
              return true;
          }
          if(idx==n){
              return false;
          }
          for(int i=idx;i<n;i++){
              list.add(i);
              if(dfs(i+1,list)){
                  return true;
              }
              list.remove(list.size()-1);
          }
          return false;
      }
  
      private boolean count(List<Integer> list) {
          int next=0;
          if(list.size()>0){
              next=list.get(list.size()-1)+1;
          }
          int size=list.size();
          for(int i=0;i<1<<size;i++){
              int cur=0;
              for(int j=0;j<size;j++){
                  if(((1<<j)&i)>0){
                      cur+=A[list.get(j)];
                  }else{
                      cur-=A[list.get(j)];
                  }
              }
              for(int j=next;j<n;j++){
                  if(A[j]==cur){
                      return true;
                  }
              }
          }
          return false;
      }
  
      private ArrayList<long[]>[] ngw(int n, int m) {
          ArrayList<long[]>[] graph = (ArrayList<long[]>[]) new ArrayList[n];
          for (int i = 0; i < n; i++) {
              graph[i] = new ArrayList<>();
          }
          for (int i = 1; i <= m; i++) {
              long s = in.nextLong() - 1, e = in.nextLong() - 1, w = in.nextLong();
              graph[(int) s].add(new long[]{e, w});
              graph[(int) e].add(new long[]{s, w});
          }
          return graph;
      }
  
      private ArrayList<Integer>[] ng(int n, int m) {
          ArrayList<Integer>[] graph = (ArrayList<Integer>[]) new ArrayList[n];
          for (int i = 0; i < n; i++) {
              graph[i] = new ArrayList<>();
          }
          for (int i = 1; i <= m; i++) {
              int s = in.nextInt() - 1, e = in.nextInt() - 1;
              graph[s].add(e);
  //            graph[e].add(s);
          }
          return graph;
      }
  
      private int ni() {
          return in.nextInt();
      }
  
      private long nl() {
          return in.nextLong();
      }
  
      private String ns() {
          return in.next();
      }
  
      private long[] na(int n) {
          long[] A = new long[n];
          for (int i = 0; i < n; i++) {
              A[i] = in.nextLong();
          }
          return A;
      }
  
      private int[] nia(int n) {
          int[] A = new int[n];
          for (int i = 0; i < n; i++) {
              A[i] = in.nextInt();
          }
          return A;
      }
  }
  
  class FastReader {
      BufferedReader br;
      StringTokenizer st;
  
      public FastReader() {
          br = new BufferedReader(new InputStreamReader(System.in));
      }
  
  
      public String next() {
          while (st == null || !st.hasMoreElements())//回车，空行情况
          {
              try {
                  st = new StringTokenizer(br.readLine());
              } catch (IOException e) {
                  e.printStackTrace();
              }
          }
          return st.nextToken();
      }
  
      public int nextInt() {
          return Integer.parseInt(next());
      }
  
      public long nextLong() {
          return Long.parseLong(next());
      }
  }