/*
구조체정렬 1420 3017 o
메모이제이션 활용 정렬 : 3014 o
퀵정렬(재귀) : 1452 o
이진탐색(재귀) : 3002 2633 o
퀵정렬+이진탐색 : 3004 o
DFS (재귀,스택) / BFS(큐)
*/
/*
#include <stdio.h>
#include <string.h>
typedef struct
{
char name[10];
int score;
}student;
int main(void)
{
student arr[51], temp[51];
int n, i, j, max;
scanf("%d", &n);
for(i=1; i<=n; i++){
scanf("%s %d", arr[i].name, &arr[i].score);
}
for(i=1; i<=n; i++){
max=i;
for(j=i; j<=n; j++){
if(arr[max].score<arr[j].score){
max=j;
}
}
temp[i] = arr[i];
arr[i] = arr[max];
arr[max] = temp[i];
}
printf("%s", arr[3].name);
return 0;
}
*/
/*
#include <stdio.h>
typedef struct
{
int math, comp, num;
}score;
int main(void)
{
score arr[1001], temp[1001];
int n, i, j, max;
scanf("%d", &n);
for(i=1; i<=n; i++){
scanf("%d %d", &arr[i].math, &arr[i].comp);
arr[i].num=i;
}
for(i=1; i<=n; i++){
max=i;
for(j=i; j<=n; j++){
if(arr[max].math<arr[j].math){
max=j;
}else if(arr[max].math==arr[j].math && j!=i){
if(arr[max].comp<arr[j].comp){
max=j;
}else if(arr[max].comp == arr[j].comp){
if(arr[max].num>arr[j].num){
max=j;
}
}
}
}
if(max>=i){
temp[i]=arr[i];
arr[i]=arr[max];
arr[max]=temp[i];
}
}
for(i=1; i<=n; i++){
printf("%d %d %d\n", arr[i].num, arr[i].math, arr[i].comp);
}
return 0;
}
arr[i] : i번째 데이터 (x)
arr[i] : i가 입력된 횟수 (o)
#include <stdio.h>
int main(void)
{
int arr[24]={}, input, n;
scanf("%d", &n);
for(int i=0; i<n; i++){
scanf("%d", &input);
arr[input]++;
}
for(int i=0; i<23; i++){
printf("%d ", arr[i+1]);
}
return 0;
}
*/
/*
#include <stdio.h>
int main(void)
{
int n, arr[100001]={}, i, j, input;
scanf("%d", &n);
for(i=1; i<=n; i++){
scanf("%d", &input);
arr[input]++;
}
for(i=0; i<100001; i++){
if(arr[i]!=0){
for(j=0; j<arr[i]; j++){
printf("%d ", i);
}
}
}
return 0;
}
#include <stdio.h>
int arr[50001]={}, a[50001]={};
void swap(int left, int right)
{
int temp;
temp = arr[right];
arr[right] = arr[left];
arr[left] = temp;
}
void qs(int s, int e)
{
int pivot=s;
int left=s, right=e+1;
do
{
do{ left++;}while(arr[pivot]>arr[left]);
do{right--;}while(arr[pivot]<arr[right]);
if(left<right) swap(left,right);
}while(left<right);
swap(pivot,right);
if(s<right-1) qs(s,right-1);
if(right+1<e) qs(right+1,e);
}
int bs(int s, int e, int k)
{
int mid = (s+e)/2;
if(arr[mid]>k){
return bs(s, mid-1, k);
}else if(arr[mid]<k){
return bs(mid+1, e, k);
}else{
return mid-1;
}
}
int main(void)
{
int n, i, j, min, temp;
scanf("%d", &n);
for(i=1; i<=n; i++){
scanf("%d", &arr[i]);
a[i]=arr[i];
}
qs(1, n);
// for(i=1; i<=n; i++){
// min=i;
// for(j=i ;j<=n; j++){
// if(arr[min]>arr[j]){
// min=j;
// }
// }
// temp=arr[i];
// arr[i]=arr[min];
// arr[min]=temp;
// }
// a
// arr
for(i=1; i<=n; i++){
// printf("a[i] : %d\n",arr[i]);
printf("%d ", bs(1, n, a[i]));
}
return 0;
}
#include <stdio.h>
int arr[100001]={};
void swap(int a, int b)
{
int temp;
temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
void qs(int s, int e)
{
int pivot = s;
int left=s, right=e+1;
do{
do{left++;}while(arr[left]<arr[pivot]);
do{right--;}while(arr[right]>arr[pivot]);
if(left<right){
swap(left, right);
}
}while(left<right);
swap(pivot, right);
if(right-1 >s) qs(s, right-1);
if(right+1<e) qs(right+1, e);
}
int main(void)
{
int n, i;
scanf("%d", &n);
for(i=1; i<=n; i++){
scanf("%d", &arr[i]);
}
qs(1, n);
for(i=1; i<=n; i++){
printf("%d ", arr[i]);
}
return 0;
}
*/
#include <stdio.h>
int arr[10000001]={};
int main(void)
{
int n, m, i,a;
scanf("%d", &n);
for(i=1; i<=n; i++){
scanf("%d", &a);
arr[a]=1;
}
scanf("%d", &m);
for(i=1; i<=m; i++){
scanf("%d", &a);
printf("%d ",arr[a]);
}
return 0;
}