Problem:
Equal Range

For a given sequence $A = \{a_0, a_1, ..., a_{n-1}\}$ which is sorted by ascending order, print a pair of the lower bound and the upper bound for a specific value $k$ given as a query.

lower bound: the place pointing to the first element greater than or equal to a specific value, or $n$ if there is no such element.

upper bound: the place pointing to the first element greater than a specific value, or $n$ if there is no such element.

Input

The input is given in the following format.

$n$
$a_0 \; a_1 \; ,..., \; a_{n-1}$
$q$
$k_1$
$k_2$
:
$k_q$

The number of elements $n$ and each element $a_i$ are given in the first line and the second line respectively. In the third line, the number of queries $q$ is given and the following $q$ lines, $q$ integers $k_i$ are given as queries.

Output

For each query, print the pari of the lower bound $l$ ($l = 0, 1, ..., n$) and upper bound $r$ ($r = 0, 1, ..., n$) separated by a space character in a line.

Constraints

$1 \leq n \leq 100,000$

$1 \leq q \leq 200,000$

$0 \leq a_0 \leq a_1 \leq ... \leq a_{n-1} \leq 1,000,000,000$

$0 \leq k_i \leq 1,000,000,000$

Sample Input 1

4
1 2 2 4
3
2
3
5

Sample Output 1

1 3
3 3
4 4

Solution in C++14 (judge verdict: Accepted)

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <vector>
#include <string>
#include <array>
#include <queue>
#include <deque>
#include <set>
#include <list>
#include <map>
#include <stack>
#include <utility>
#include <algorithm>
#include <numeric>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cctype>
#include <cstring>
#include <climits>
#include <bitset>
#include <random>
#include <functional>
#include <sstream>
#include <iomanip>

using namespace std;

#define rep(i, n) for(int i=0; i<(n); i++)
#define FOR(i, m, n) for(int i=(m);i<(n);i++)
#define sz(x) ((int)(x).size())
#define all(x) (x).begin(),(x).end()
#define SORT(x) sort((x).begin(),(x).end())
#define REVE(x) reverse((x).begin(),(x).end())
#define mp make_pair
#define pb push_back
#define F first
#define S second


typedef vector<int> VI;
typedef vector<string> VS;
typedef vector<vector<int>> VVI;
typedef pair<int, int> PII;
typedef long long LL;

int main() {
	int n; cin >> n;
	VI a(n); rep(i, n)cin >> a[i];
	int q; cin >> q;
	VI k(q); rep(i, q)cin >> k[i];

	rep(i, q) {
		decltype(a)::iterator it = lower_bound(all(a), k[i]);
		size_t pos = distance(a.begin(), it);
		decltype(a)::iterator it2 = upper_bound(all(a), k[i]);
		size_t pos2 = distance(a.begin(), it2);
		cout << pos << " " << pos2 << endl;
	}
}