public static void main(String[] args) throws Throwable {
		BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
		int N=10000;
		ArrayList<int[]> lAdy[]=new ArrayList[N];
		dijkstra=new int[10000];
		visitados=new boolean[10000];
		for(int i=0;i<N;i++)lAdy[i]=new ArrayList<int[]>();
		for(int H,M;(N=parseInt(in.readLine().trim()))!=0;) {
			for(int i=0;i<N;i++)lAdy[i].clear();
			StringTokenizer st=new StringTokenizer(in.readLine());
			hotels.clear();
			H=parseInt(st.nextToken());
			for(int i=0;i<H;i++)hotels.add(parseInt(st.nextToken())-1);
			hotels.add(0);
			hotels.add(N-1);
			M=parseInt(in.readLine().trim());
			for(int i=0;i<M;i++) {
				st=new StringTokenizer(in.readLine());
				int from=parseInt(st.nextToken())-1,to=parseInt(st.nextToken())-1,cost=parseInt(st.nextToken());
				lAdy[from].add(new int[]{to,cost});
				lAdy[to].add(new int[]{from,cost});
			}
			TreeSet<Integer> nuevos=new TreeSet<Integer>();
			nuevos.add(0);
			int sol=0;
			for(;!nuevos.contains(N-1)&&!nuevos.isEmpty();sol++) {
				hotels.removeAll(nuevos);
				TreeSet<Integer> set=new TreeSet<Integer>();
				for(int a:nuevos)
					set.addAll(dijkstra(lAdy,a,N));
				nuevos=set;
			}
			System.out.println(nuevos.isEmpty()?-1:sol-1);
		}
	}