//#include <stdio.h>
//int n,k,m,a,c=0,count=1,g=1;
//int arr[10000][31]={},varr[100]={};
//void f(int s)
//{
// int i,j;
// printf("\n**%d** ",s+1);
// for(i=0;i<n;i++)
// {
// c=0;
// for(j=0;j<k;j++)
// {
// if(arr[s][j]!=arr[i][j])
// {
// c++;
// }
// }
// if(c==1)
// {
// printf("**%d** ",i+1);
// if(i=a+1)
// {
// return ;
// }
// f(i);
// }
// }
//}
//int main()
//{
// int i,j;
// scanf("%d %d",&n,&k);
// for(i=0;i<n;i++)
// {
// for(j=0; j<k; j++) {
// scanf("%1d", &arr[i][j]);
// }
// }
// scanf("%d",&m);
// for(i=0;i<m;i++)
// {
// scanf("%d",&a);
// f(0);
// }
//}
#include<stdio.h>
int n,k, map[1000][100] = {0};
int visit[1000] = {};
void f(int start, int end) {
printf("%d ", start+1);
visit[start] = 1;
if(start==end)
{
return ;
}
for(int i=0; i<n; i++) {
int c = 0;
for(int j=0; j<k; j++) {
if(map[start][j] != map[i][j]&&visit[i]==0) {
c++;
}
}
if(c == 1) {
f(i, end);
}
}
}
int main() {
scanf("%d %d", &n, &k);
for(int i=0; i<n; i++) {
for(int j=0; j<k; j++) {
scanf("%1d", &map[i][j]);
}
}
int p;
scanf("%d",&p);
for(int i=0; i<p; i++) {
int q;
scanf("%d", &q);
f(0, q);
}
}