Can anyone help me with this knapsack!

problem statement

my code:
#include <bits/stdc++.h>
using namespace std;
string knap(vector a,int n)
{
int i,j,ar[a.size()+1][n+1];
for(i=0;i<=a.size();i++)
for(j=0;j<=n;j++)
ar[i][j]=0;

for(i=1;i<=a.size();i++)
{
    for(j=1;j<=n&&j<a[i-1];j++)
    ar[i][j]=ar[i-1][j];
    for(j=a[i-1];j<=n;j++)
    if(a[i-1]+ar[i-1][j-a[i-1]]==j)
    ar[i][j]=j;
    else
    ar[i][j]=ar[i-1][j];
}
if(ar[a.size()][n]==n)
return "YES";
return "NO";

}

int main() {
int t;
cin>>t;
while(t–)
{
int n,q;
cin>>q>>n;
vector ar(q);
for(int i=0;i<q;i++)
cin>>ar[i];
sort(ar.begin(),ar.end());
cout<<knap(ar,n);
cout<<endl;
}
return 0;
}

i am getting wrong answer after submission!!