#include #include #include using namespace std; using namespace __gnu_pbds; #define pb emplace_back #define fi first #define se second #define md 1000000007 #define gc getchar #define trace1(x) cerr<<#x<<": "<,greater > spq; // min priority queue typedef tree,rb_tree_tag,tree_order_statistics_node_update> o_set; struct ppair{ int fi,se; ppair(int a,int b):fi(a),se(b){} ppair():fi(0),se(0){} }; inline bool cmp(const ppair &a,const ppair &b) { if(a.fi==b.fi) return a.se>x; return x;} template T power(T a,T b,T m) { T ans = 1,p = a; while(b) { if(b&1) ans = (ans*p)%m; p = (p*p)%m; } return ans; } template T gcd(T a,T b) { if(b==0) return a; else return gcd(b,a%b); } template T e_gcd(T a,T b,T &x,T &y) { if(b==0) { x = 1,y = 0; return a; } T x1,y1; T g = e_gcd(b,a%b,x1,y1); x = y1; y = x1-(a/b)*y1; if(y<0) { y+=a; x-=b; } return g; } template T invmod(T a,T m) { T x,y,g; g = e_gcd(m,a,x,y); if(g!=1) return -1; else return y; } inline void sc(int &x) { register int c = gc(); bool flag = false; x = 0; for(;((c<48 && c!=45) || c>57);c = gc()); if(c==45) { flag = true; c = gc(); } for(;c>47 && c<58;c = gc()) {x = (x<<1) + (x<<3) + c - 48;} if(flag) x = x - (x<<1); return; } inline void scll(ll &x) { register int c = gc(); bool flag = false; x = 0; for(;((c<48 && c!=45) || c>57);c = gc()); if(c==45) { flag = true; c = gc(); } for(;c>47 && c<58;c = gc()) {x = (x<<1) + (x<<3) + c - 48;} if(flag) x = x - (x<<1); return; } signed main() { //freopen("inputf.txt","r",stdin); int t; sd(t); while(t--) { int n; sd(n); int sum = 0; for(int i=1;i<=n;i++) { int x; sd(x); x%=3; sum+=x; } sum = sum%3; if(sum==0) cout<<"Yes"<