// C
#include <cassert>
#include <cctype> //char型などの文字列の長さを測定するstrlen関数など
#include <cerrno>
#include <cfloat>
#include <ciso646>
#include <climits>
#include <clocale>
#include <cmath>  //平方根などを求めるsqrt関数など
#include <csetjmp>
#include <csignal>
#include <cstdarg>
#include <cstddef>
#include <cstdio> //標準入出力を行うscanf関数、printf関数など
#include <cstdlib> //簡単にソートを行うqsort関数など
#include <cstring>
#include <ctime>
// C++
#include <algorithm> //数の入れ替えを行うswap関数など
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream> //C++においての標準入出力であるsin、coutなど
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map> //配列内の要素(array[0]の0の部分)を文字列に置き換えて使いたい時など
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue> //FIFOの実装など
#include <set> 
#include <sstream>
#include <stack> //LIFOの実装など
#include <stdexcept>
#include <streambuf>
#include <string> //C++における文字列型のstring型の実装など
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector> //動的に配列を確保したい時など


using namespace std;

#define INF 1 << 25
typedef vector<int> VI;
#define rep(i, n) for(int i = 0; i < (int)n; i++)

int ans = INF;

int main(){
	vector<int> ar;
	int n, m, q, now = 0, i;
	scanf("%d %d %d", &n, &m, &q);
	for (i = 0; i < n; i++){
		ar.push_back(i);
	}
	int a;
	int b = ar.size();
	for (i = m; i; i--){
		scanf("%d", &a);
		if (a % b == 0){
			b--;
			ar.erase(ar.begin() + now);
			now %= b;
			continue;
		}
		if (a % 2 == 0){
			now += (a %= b);
			now %= b;
			ar.erase(ar.begin() + now);
			now %= (b -= 1);
		}
		else{
			now += b - (a %= b);
			now %= b;
			ar.erase(ar.begin() + now);
			now %= (b -= 1);
		}
	}
	for (i = q; i; i--){
		scanf("%d", &a);
		if (binary_search(ar.begin(),ar.end(),a)){
			printf("1\n");
		}
		else{
			printf("0\n");
		}
		
	}
	return 0;
}