You are given a permutation p=[p_1, p_2, …, p_n] of integers from 1 to n. Let's call the number m (1 ≤ m ≤ n) beautiful, if there exists two indices l, r (1 ≤ l ≤ r ≤ n), such that the numbers [p_l, p_{l+1}, …, p_r] is a permutation of numbers 1, 2, …, m.

For example, let p = [4, 5, 1, 3, 2, 6]. In this case, the numbers 1, 3, 5, 6 are beautiful and 2, 4 are not. It is because:

  * if l = 3 and r = 3 we will have a permutation [1] for m = 1; 
  * if l = 3 and r = 5 we will have a permutation [1, 3, 2] for m = 3; 
  * if l = 1 and r = 5 we will have a permutation [4, 5, 1, 3, 2] for m = 5; 
  * if l = 1 and r = 6 we will have a permutation [4, 5, 1, 3, 2, 6] for m = 6; 
  * it is impossible to take some l and r, such that [p_l, p_{l+1}, …, p_r] is a permutation of numbers 1, 2, …, m for m = 2 and for m = 4. 



You are given a permutation p=[p_1, p_2, …, p_n]. For all m (1 ≤ m ≤ n) determine if it is a beautiful number or not.

Input

The first line contains the only integer t (1 ≤ t ≤ 1000) — the number of test cases in the input. The next lines contain the description of test cases.

The first line of a test case contains a number n (1 ≤ n ≤ 2 ⋅ 10^5) — the length of the given permutation p. The next line contains n integers p_1, p_2, …, p_n (1 ≤ p_i ≤ n, all p_i are different) — the given permutation p.

It is guaranteed, that the sum of n from all test cases in the input doesn't exceed 2 ⋅ 10^5.

Output

Print t lines — the answers to test cases in the order they are given in the input. 

The answer to a test case is the string of length n, there the i-th character is equal to 1 if i is a beautiful number and is equal to 0 if i is not a beautiful number.

Example

Input


3
6
4 5 1 3 2 6
5
5 3 1 2 4
4
1 4 3 2


Output


101011
11111
1001

Note

The first test case is described in the problem statement.

In the second test case all numbers from 1 to 5 are beautiful:

  * if l = 3 and r = 3 we will have a permutation [1] for m = 1; 
  * if l = 3 and r = 4 we will have a permutation [1, 2] for m = 2; 
  * if l = 2 and r = 4 we will have a permutation [3, 1, 2] for m = 3; 
  * if l = 2 and r = 5 we will have a permutation [3, 1, 2, 4] for m = 4; 
  * if l = 1 and r = 5 we will have a permutation [5, 3, 1, 2, 4] for m = 5. 
#include <bits/stdc++.h>
using namespace std;
struct SegTree {
  vector<int> tree;
  void build(vector<int> &a, int v, int l, int r) {
    if (l == r)
      tree[v] = a[l];
    else {
      int m = (l + r) / 2;
      build(a, 2 * v, l, m);
      build(a, 2 * v + 1, m + 1, r);
      tree[v] = tree[2 * v] + tree[2 * v + 1];
    }
  }
  void update(int pos, int val, int v, int l, int r) {
    if (l == r && l == pos)
      tree[v] = val;
    else if (l == r)
      return;
    else {
      int m = (l + r) / 2;
      if (pos <= m)
        update(pos, val, 2 * v, l, m);
      else
        update(pos, val, 2 * v + 1, m + 1, r);
      tree[v] = tree[2 * v] + tree[2 * v + 1];
    }
  }
  int sum(int q_l, int q_r, int v, int l, int r) {
    if (q_r < q_l) return 0;
    if (q_l == l && q_r == r)
      return tree[v];
    else {
      int m = (l + r) / 2;
      return sum(q_l, min(q_r, m), 2 * v, l, m) +
             sum(max(q_l, m + 1), q_r, 2 * v + 1, m + 1, r);
    }
  }
  void set_size(int n) { tree.resize(4 * n); }
};
inline void solve() {
  int q;
  cin >> q;
  while (q--) {
    int n;
    cin >> n;
    vector<pair<int, int> > v(n);
    for (int i = 0; i < (n); i++) {
      cin >> v[i].first;
      v[i].second = i + 1;
    }
    sort(v.begin(), v.end());
    string otv = "";
    set<int> s;
    long long sum = 0;
    for (int i = 0; i < (n); i++) {
      s.insert(v[i].second);
      sum += v[i].second;
      long long col = *(--s.end()) - *s.begin() + 1;
      long long ar = ((*s.begin() + *(--s.end())) * col) / 2;
      if (ar == sum)
        otv += '1';
      else
        otv += '0';
    }
    cout << otv << '\n';
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  solve();
}
