importjava.util.Scanner;publicclassMain{staticint[] need =newint[26];staticint[][] flood =newint[16][26];staticint n,m;staticboolean[] vis =newboolean[30];staticint sum =0;staticint[] d =newint[30];staticint min =Integer.MAX_VALUE;staticint[] ans =newint[30];publicstaticvoidmain(String[] args){Scanner sc =newScanner(System.in);
n = sc.nextInt();for(int i =0; i < n; i++){
need[i]= sc.nextInt();}
m = sc.nextInt();for(int i =0; i < m; i++){for(int j =0; j < n; j++){
flood[i][j]= sc.nextInt();}}dfs(0,0);System.out.print(min +" ");for(int i =0; i < min; i++){System.out.print(ans[i]+1+" ");}}publicstaticvoiddfs(int step,int choose){if(step == m){if(check(choose)){if(choose < min){
min = choose;for(int i =0; i < choose; i++){
ans[i]= d[i];}}}return;}for(int i = step; i < m; i++){if(vis[i]==false){
vis[i]=true;
d[choose]= i;dfs(i+1, choose+1);
vis[i]=false;
d[choose]=0;}}}publicstaticbooleancheck(int x){for(int i =0; i < n; i++){int sum =0;for(int j =0; j < x; j++){
sum += flood[d[j]][i];}if(sum < need[i]){returnfalse;}}returntrue;}}