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> 
    #include <string>
    #include <cmath> 
    using namespace std;
    typedef long long ll;
    typedef long double ld;
    typedef pair<int,int> pii;
    typedef vector<int> vi;
    typedef vector<string> vs;
    typedef vector<char> vc;
    typedef vector<vs> vvs;
    typedef vector<vc> vvc;
    typedef vector<ll> vll;
    typedef vector<vi> vvi;
    typedef vector<vll> vvll;
    typedef map<int,int> mpii;
    typedef map<int,vi> mpivi;
    typedef map<string,int> mpsi;
    typedef map<pii,int> map_pair;
    typedef set<int> seti;
    #define	bits(n)						( (n==0)?0:((int)log2(n)+1) )
    #define endl '\n'
    #define FOR(i,n) SFOR(i,0,n)
    #define SFOR(i,m,n) for(i=m;i<n;i++)
    #define FORD(i,n) for(i=n-1;i>=0;i--)
    #define digits(i)   (int)((log(i)/log(10))+1)		
    #define inf							(int)1e9
    #define eps							1e-9
    #define pi							3.1415926535897932384626433832795
    #define mod							1000000007
    #define boost ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0)
    #define pb push_back
    #define all(s) s.begin(), s.end()
    #define sz(s) s.size()
    #define si(t) scanf("%d",&(t))
    #define ss(t) scanf("%s",(t))
    #define sll(t) scanf("%lld",&(t))
    #define maX(a,b)					( (a) > (b) ? (a) : (b))
    #define miN(a,b)					( (a) < (b) ? (a) : (b))
    #define check_bit(var,pos) ((var) & (1<<(pos)))
    #define prn1(x)                cout<<#x<<": "<<x<<endl
    #define prn2(x, y)             cout<<#x<<": "<<x<<" | "<<#y<<": "<<y<<endl
    #define prn3(x, y, z)          cout<<#x<<":" <<x<<" | "<<#y<<": "<<y<<" | "<<#z<<": "<<z<<endl
    #define prn4(a, b, c, d)       cout<<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<endl
    #define prn5(a, b, c, d, e)    cout<<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<" | "<<#e<< ": "<<e<<endl
    #define prn6(a, b, c, d, e, f) cout<<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<" | "<<#e<< ": "<<e<<" | "<<#f<<": "<<f<<endl
    const int N = 1e5;
   struct myfun
    {
        public:
    bool operator()(pair<double,double> a,pair<double,double>  b)
    {
       // prn2(a.first,b.first);
    //    prn2(a.second/a.first,b.second/b.first);
        return a.second/a.first<=b.second/b.first;
    }
    };
void AA()
{
    int t;
    cin>>t;
    for(int k=0;k<t;k++)
    {
       
    }
    
}
void A()
{
    int t;
    cin>>t;
    for(int kk=0;kk<t;kk++)
    {
        int n,x;
        cin>>n>>x;
        int ans=0;
        vi vec(n);
        for(int i=0;i<n;i++)
        {
            cin>>vec[i];
        }
        bool sorted=0;
        bool done=0;
        for(int i=0;i<n;i++)
        {
            sorted=1;
             for(int j=max(1,i);j<n;j++)
             {
                 if(vec[j-1]>vec[j])
                 {
                     sorted=0;
                     break;
                 }
             }
             if(sorted)
             {
                 cout<<ans<<endl;
                 done=1;
                 break;
             }
             if(vec[i]>x)
             {
                 swap(vec[i],x);
                 ans++;
             }
             if(i>0 && vec[i]<vec[i-1])
             {
                 cout<<"-1"<<endl;
                 done=1;
                 break;
             }
        }
        if(!done)
        cout<<ans<<endl;
        
    }
}

void B()
{
    int t;
    cin>>t;
    for(int kk=0;kk<t;kk++)
    {
       
    }
   
}

void D()
{
    
}

    int main() {
        boost;
        //clock_t t;
        //t=clock();
        //freopen("C:\\Users\\asderfers\\Desktop\\in.txt", "r", stdin);
        //freopen("C:\\Users\\asderfers\\Desktop\\out.txt", "w", stdout);
        //freopen("J.txt", "r", stdin);
        A();
        //B();
        //C();
          //D1();
        //t = clock() - t;
        //printf ("It took me %d clicks (%f seconds).\n",t,((float)t)/CLOCKS_PER_SEC);
        return 0;
    } 