Problem: Heidi got one brain, thumbs up! But the evening isn't over yet and one more challenge awaits our dauntless agent: after dinner, at precisely midnight, the N attendees love to play a very risky game...

Every zombie gets a number ni (1 ≤ ni ≤ N) written on his forehead. Although no zombie can see his own number, he can see the numbers written on the foreheads of all N - 1 fellows. Note that not all numbers have to be unique (they can even all be the same). From this point on, no more communication between zombies is allowed. Observation is the only key to success. When the cuckoo clock strikes midnight, all attendees have to simultaneously guess the number on their own forehead. If at least one of them guesses his number correctly, all zombies survive and go home happily. On the other hand, if not a single attendee manages to guess his number correctly, all of them are doomed to die!

Zombies aren't very bright creatures though, and Heidi has to act fast if she does not want to jeopardize her life. She has one single option: by performing some quick surgery on the brain she managed to get from the chest, she has the ability to remotely reprogram the decision-making strategy of all attendees for their upcoming midnight game! Can you suggest a sound strategy to Heidi which, given the rules of the game, ensures that at least one attendee will guess his own number correctly, for any possible sequence of numbers on the foreheads?

Given a zombie's rank R and the N - 1 numbers ni on the other attendees' foreheads, your program will have to return the number that the zombie of rank R shall guess. Those answers define your strategy, and we will check if it is flawless or not.

Input

The first line of input contains a single integer T (1 ≤ T ≤ 50000): the number of scenarios for which you have to make a guess.

The T scenarios follow, described on two lines each: 

  * The first line holds two integers, N (2 ≤ N ≤ 6), the number of attendees, and R (1 ≤ R ≤ N), the rank of the zombie who has to make the guess. 
  * The second line lists N - 1 integers: the numbers on the foreheads of all other attendees, listed in increasing order of the attendees' rank. (Every zombie knows the rank of every other zombie.) 

Output

For every scenario, output a single integer: the number that the zombie of rank R shall guess, based on the numbers ni on his N - 1 fellows' foreheads.

Examples

Input

4
2 1
1
2 2
1
2 1
2
2 2
2


Output

1
2
2
1


Input

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


Output

5
2

Note

For instance, if there were N = 2 two attendees, a successful strategy could be: 

  * The zombie of rank 1 always guesses the number he sees on the forehead of the zombie of rank 2. 
  * The zombie of rank 2 always guesses the opposite of the number he sees on the forehead of the zombie of rank 1. 

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;
int GEN_SIZE = 6;
vector<int> v, adj[50005];
int match[50005], match2[50005], vis[50005], ans[50005];
int V, Vleft;
int conv(vector<int> v, int s) {
  int ans = 0;
  for (int i = 0; i < v.size(); i++) {
    ans *= s;
    ans += v[i];
  }
  return ans;
}
vector<int> unconv(int p, int s) {
  vector<int> v1;
  for (int i = 0; i < s; i++) {
    v1.push_back(p % s);
    p /= s;
  }
  reverse(v1.begin(), v1.end());
  return v1;
}
void recur(int x) {
  if (x == GEN_SIZE) {
    int rval = conv(v, GEN_SIZE);
    for (int rem = 0; rem < GEN_SIZE; rem++) {
      vector<int> tmp_v;
      tmp_v.push_back(rem);
      for (int i = 0; i < GEN_SIZE; i++)
        if (rem != i) tmp_v.push_back(v[i]);
      int lval = conv(tmp_v, GEN_SIZE);
      adj[rval].push_back(lval);
    }
    return;
  }
  for (int i = 0; i < GEN_SIZE; i++) {
    v.push_back(i);
    recur(x + 1);
    v.pop_back();
  }
}
int aug(int v) {
  if (vis[v]) return 0;
  vis[v] = 1;
  for (int j = 0; j < (int)adj[v].size(); j++) {
    int r = adj[v][j];
    if (match[r] == -1) {
      match[r] = v;
      return 1;
    }
  }
  for (int j = 0; j < (int)adj[v].size(); j++) {
    int r = adj[v][j];
    if (aug(match[r])) {
      match[r] = v;
      return 1;
    }
  }
  return 0;
}
int T;
vector<pair<pair<int, int>, int> > q;
int main() {
  scanf("%d", &T);
  for (int i = 0; i < T; i++) {
    int N, R;
    scanf("%d%d", &N, &R);
    vector<int> v1;
    v1.push_back(R - 1);
    for (int j = 0; j < N - 1; j++) {
      int x;
      scanf("%d", &x);
      v1.push_back(x - 1);
    }
    int val = conv(v1, N);
    q.push_back(make_pair(make_pair(N, val), i));
  }
  sort(q.begin(), q.end());
  int curN = 0;
  for (int i = 0; i < q.size(); i++) {
    if (curN != q[i].first.first) {
      curN = q[i].first.first;
      GEN_SIZE = curN;
      memset(match, -1, sizeof(match));
      int v = 1;
      for (int i = 0; i < GEN_SIZE; i++) {
        v *= GEN_SIZE;
      }
      for (int i = 0; i < v; i++) adj[i].clear();
      recur(0);
      for (int i = 0; i < v; i++) {
        memset(vis, 0, sizeof(vis));
        aug(i);
      }
      for (int i = 0; i < v; i++) match2[match[i]] = i;
    }
    vector<int> qv = unconv(q[i].first.second, curN);
    vector<int> v1 = unconv(match[q[i].first.second], curN);
    ans[q[i].second] = v1[qv[0]] + 1;
  }
  for (int i = 0; i < T; i++) printf("%d\n", ans[i]);
}