#include <bits/stdc++.h>
using namespace std;
const int MAXN = 110;
int min_v[MAXN];
int nums[MAXN][MAXN];
int ans[MAXN];
int stacks[MAXN];
int n,m,min_size=110;
bool judge(int p){
int sum[MAXN]={0};
memset(sum,0,sizeof sum);
for(int i=0;i<p;i++){
for(int j=1;j<=n;j++){
sum[j]+=nums[stacks[i]][j];
}
}
for(int i=1;i<=n;i++){
if(sum[i]<min_v[i]){
return false;
}
}
return true;
}
void dfs(int x,int p){
if(p>=min_size)return;
if(x>n){
if(judge(p)){
for(int i=0;i<p;i++){
ans[i]=stacks[i];
}
min_size=p;
}
return;
}
stacks[p]=x;
dfs(x+1,p+1);
stacks[p]=0;
dfs(x+1,p);
}
int main() {
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&min_v[i]);
}
scanf("%d",&m);
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
scanf("%d",&nums[i][j]);
}
}
dfs(1,0);
printf("%d ",min_size);
for(int i=0;i<min_size;i++){
printf("%d ",ans[i]);
}
return 0;
}