You are given a sequence a consisting of n integers a_1, a_2, ..., a_n, and an integer x. Your task is to make the sequence a sorted (it is considered sorted if the condition a_1 ≤ a_2 ≤ a_3 ≤ ... ≤ a_n holds).

To make the sequence sorted, you may perform the following operation any number of times you want (possibly zero): choose an integer i such that 1 ≤ i ≤ n and a_i > x, and swap the values of a_i and x.

For example, if a = [0, 2, 3, 5, 4], x = 1, the following sequence of operations is possible:

  1. choose i = 2 (it is possible since a_2 > x), then a = [0, 1, 3, 5, 4], x = 2; 
  2. choose i = 3 (it is possible since a_3 > x), then a = [0, 1, 2, 5, 4], x = 3; 
  3. choose i = 4 (it is possible since a_4 > x), then a = [0, 1, 2, 3, 4], x = 5. 



Calculate the minimum number of operations you have to perform so that a becomes sorted, or report that it is impossible.

Input

The first line contains one integer t (1 ≤ t ≤ 500) — the number of test cases.

Each test case consists of two lines. The first line contains two integers n and x (1 ≤ n ≤ 500, 0 ≤ x ≤ 500) — the number of elements in the sequence and the initial value of x.

The second line contains n integers a_1, a_2, ..., a_n (0 ≤ a_i ≤ 500).

The sum of values of n over all test cases in the input does not exceed 500.

Output

For each test case, print one integer — the minimum number of operations you have to perform to make a sorted, or -1, if it is impossible.

Example

Input


6
4 1
2 3 5 4
5 6
1 1 3 4 4
1 10
2
2 10
11 9
2 10
12 11
5 18
81 324 218 413 324


Output


3
0
0
-1
1
3
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pi pair<int,int>
#define pll pair<ll,ll>
#define vi vector<int>
#define vll  vector<ll>
#define vvi vector<vi>
#define vvll vector<vll>
#define vpll vector<pll>
#define vpi vector<pi>
#define vvpll vector<vpll>
#define vvpi vector<vpi>
#define vs vector<string>
#define pb push_back
#define eb emplace_back
#define fi first
#define se second
#define ld  long double
#define MP make_pair
#define mapii map<int,int>
#define umapii unordered_map<int,int>
#define mapll map<ll,ll>
#define umapll unordered_map<ll,ll>
#define FOR(i,a,b) for(int i = a; i <= b; i++)
#define FORI(i,a,b) for(int i = a; i >= b; i--)
#define all(v) (v).begin(),(v).end()
#define rall(v) (v).rbegin(),(v).rend()
template<typename T>
inline void read(vector<T> &v , int n){ for(int i = 0; i < n; i++) cin >> v[i]; }
template<typename T>
inline void read(T &n){ cin >> n; }
inline void read(string &s){ cin >> s; }
template<typename T>
inline void dbgc(const char* txt , T &c){ cout << txt << ": "; for (auto it = c.begin(); it != c.end(); it++) cout << *it << " "; cout << endl;}
template<typename T>
inline void dbgx(const char *txt , T x) { cout << txt << ": "; cout << x << endl;}
const int MOD = 1e9 + 7;
const int INF = 1e9 + 7;

/*
      . Think dp before greedy
      . Base case
      . Integer overflow
      . while using map don't write mp[x] multiple times
      . mp[x] creates extra entry 
      . Don't compare your progress with others(just keep practicing)
*/
void solve(){
  int n;
  cin >> n;
  int x; cin >> x;
  vector<int> a(n);
  bool allgood = true;
  for(int i = 0; i < n; i++){
  	cin >> a[i];
  }
  int curx = x;
  int ans = 0;
  for(int i = 0; i < n; i++){
  	bool isnecessary = false;
  	for(int j = i + 1; j < n; j++){
  		if(a[j] < a[j - 1]){
  			isnecessary = true;
  			break;
  		}
  	}
  	if(!isnecessary) break;
  	if(a[i] > curx){
  		swap(a[i] , curx);
  		++ans;
  	}
  }

  bool achieved = true;
  for(int i = 1; i < n; i++){
  	if(a[i] < a[i - 1]){
  		achieved = false;
  	}
  }
  if(achieved) cout << ans << endl;
  else cout << -1 << endl;
}

int main(){
    ios :: sync_with_stdio(false); 
    cin.tie(nullptr); 
    cout.tie(nullptr);
    int tt = 1;
    cin >> tt;
    for(int tc = 1; tc <= tt; tc++){
        // cout << "Case #" << tc << ": ";
        solve();
    }
}