Why am i getting SIGSEVG? Plz Help

#include
using namespace std;
bool subStringSum(int a[],int i,int n,int key){
int sum =0;
for(int j=0;j<n && i>0;j++){
if(i&1){
sum += a[j];
}
i = i>>1;
}
if(sum == key){
return true;
}
return false;
}
int main() {
int t;
cin>>t;
while(t–){
int n;
cin>>n;
int key;
cin>>key;
int a[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
int range = (1<<n);
for(int i=0;i<range;i++){
if(subStringSum(a,i,n,key)){
cout<<“Yes”<<endl;
return 1;
}
}
cout<<“No”<<endl;
return 0;
}
}