#include <iostream>
#include <string>
#include <vector>
#include <math.h>
#include <algorithm>
#include <stdint.h>
#include <queue>
#include <bitset>
#include <iomanip>
#include <set>
#include <map>

using namespace std;

#define PI (3.14159265358979323846)
#define INF (2147483647)
#define INF_LL (9223372036854775807)
#define DIV_NUM (1000000007)
typedef long long ll;

// 配列初期化テンプレ
template<typename A, size_t N, typename T>
void Fill(A(&array)[N], const T& val) {
	std::fill((T*)array, (T*)(array + N), val);
}

bool cmp(const int& data, const int& key) {
	return data < key;
}

int customSearch(const vector<int>& data, const size_t& N, const int& key) {

	int lo = 0;
	int hi = N; // data array size

	while (lo < hi) {							// (lo=hiの１点に収束するまで続ける)
		int mid = (lo + hi) / 2;				// loとhiの中間地点の値を確認
		if (cmp(data[mid], key)) lo = mid + 1;	// LISの値より入力が大きかったら、loを持ち上げる
		else               hi = mid;			// LISの値が入力より小さかったら、hiを下げる
	}
	// lo：input <= key となる最初のindex
	return lo;
}

int main() {
	int n;
	cin >> n;
	vector<int> input(n);
	for (int i = 0; i < n; i++) {
		cin >> input[i];
	}

	int q;
	cin >> q;

	for (int i = 0; i < q; i++) {
		int key;
		cin >> key; // 探したい数

		int index = customSearch(input, n, key);

		// lo：input <= key となる最初のindex
		if (index == n) {
			// 配列に見つからなかった場合
			cout << "0" << endl;
		}
		else if(input[index]==key){
			cout << "1" << endl;
		}
		else {
			cout << "0" << endl;
		}

	}

	return 0;

}

