/*
二分查找,左闭右开区间
注意查找的数组一定是有序的
*/
#include<cstdio>
#include<iostream>
#include<algorithm>
#define N 1005
using namespace std;
int a[N];
int bsearch(int *a,int x,int y,int val) {
int m;
while(x<y) {
m=x+(y-x)/2;
if(a[m]==val) return m;
else if(a[m]>val)
y=m;
else
x=m+1;
}
return -1;
}
//二分查找求下界
int lower_bound(int *a,int x,int y,int val) { //
int m;
while(x<y) {
m=x+(y-x)/2;
if(a[m]>=val) y=m;//继续往左找
else
x=m+1;
}
return x;
}
/*
a[m]=val:至少已经找到一个,而左边可能还有所以,y=m;
a[m]>val:所求位置不可能在后面,所以y=m;
a[m]<val:m和前面的都不行,所以x=m+1.
*/
//二分查找求上界
int upper_bound(int *a,int x,int y,int val) {
int m;
while(x<y) {
m=x+(y-x)/2;
if(a[m]<=v) x=m+1;
else
y=m;
}
return y;
}
int main() {
int n,m,v;
while(~scanf("%d",&n)) {
for(int i=1; i<=n; i++)
scanf("%d",&a[i]);
sort(a+1,a+n+1);
scanf("%d",&m);
while(m--) {
scanf("%d",&v);
printf("%d\n",bsearch(a,1,n+1,v));
}
}
}