#include #include #include #include #include #include #include #include #include #include #include #include #include #define Rep(x,a,b) for (int x=a;x<=(int)b;x++) #define Drp(x,a,b) for (int x=a;x>=(int)b;x--) #define Cross(x,a) for (int x=Hd[a];~x;x=Nx[x]) #define ll long long #define INF (1<<29) #define PII pair #define PDD pair #define mk(a,b) make_pair(a,b) #define fr first #define sc second using namespace std; inline ll Rd(){ ll x=0;int ch=getchar(),f=1; while (!isdigit(ch)&&(ch!='-')&&(ch!=EOF)) ch=getchar(); if (ch=='-'){f=-1;ch=getchar();} while (isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();} return x*f; } inline void Rt(ll x){ if (x<0) putchar('-'),x=-x; if (x>=10) Rt(x/10),putchar(x%10+'0'); else putchar(x+'0'); } const int N=100005; int n,m,a[N]; int main(){ int T=Rd(); while (T--){ n=Rd(),m=Rd(); Rep(i,1,n) a[i]=Rd(); Rep(i,1,n) (a[i]+=a[i-1])%=m; sort(a+1,a+n+1); int F=0; Rep(i,0,n-1) if (a[i]==a[i+1]){ puts("YES");F=1;break; } if (!F) puts("NO"); } }