A binary string is a string where each character is either 0 or 1. Two binary strings a and b of equal length are similar, if they have the same character in some position (there exists an integer i such that a_i = b_i). For example:

  * 10010 and 01111 are similar (they have the same character in position 4); 
  * 10010 and 11111 are similar; 
  * 111 and 111 are similar; 
  * 0110 and 1001 are not similar. 



You are given an integer n and a binary string s consisting of 2n-1 characters. Let's denote s[l..r] as the contiguous substring of s starting with l-th character and ending with r-th character (in other words, s[l..r] = s_l s_{l + 1} s_{l + 2} ... s_r).

You have to construct a binary string w of length n which is similar to all of the following strings: s[1..n], s[2..n+1], s[3..n+2], ..., s[n..2n-1].

Input

The first line contains a single integer t (1 ≤ t ≤ 1000) — the number of test cases.

The first line of each test case contains a single integer n (1 ≤ n ≤ 50).

The second line of each test case contains the binary string s of length 2n - 1. Each character s_i is either 0 or 1.

Output

For each test case, print the corresponding binary string w of length n. If there are multiple such strings — print any of them. It can be shown that at least one string w meeting the constraints always exists.

Example

Input


4
1
1
3
00000
4
1110000
2
101


Output


1
000
1010
00

Note

The explanation of the sample case (equal characters in equal positions are bold):

The first test case: 

  * 1 is similar to s[1..1] = 1. 



The second test case: 

  * 000 is similar to s[1..3] = 000; 
  * 000 is similar to s[2..4] = 000; 
  * 000 is similar to s[3..5] = 000. 



The third test case: 

  * 1010 is similar to s[1..4] = 1110; 
  * 1010 is similar to s[2..5] = 1100; 
  * 1010 is similar to s[3..6] = 1000; 
  * 1010 is similar to s[4..7] = 0000. 



The fourth test case: 

  * 00 is similar to s[1..2] = 10; 
  * 00 is similar to s[2..3] = 01. 
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.math.BigInteger;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Deque;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Random;
import java.util.Scanner;
import java.util.Set;
import java.util.SortedSet;
import java.util.Stack;
import java.util.TreeSet;
import java.util.Vector;
import java.util.concurrent.ThreadLocalRandom;

public class CodeForces {

	static class Range {

		String s;

		public Range(String s) {
			this.s = s;
		}

		@Override
		public String toString() {
			return s;
		}
	}

	static class RangeComparator implements Comparator<Range> {

		public int compare(Range o1, Range o2) {
			String[] v1 = o1.s.split("#");
			String[] v2 = o2.s.split("#");
			int val1 = Integer.parseInt(v1[1]) - Integer.parseInt(v1[0]);
			int val2 = Integer.parseInt(v2[1]) - Integer.parseInt(v2[0]);
			if (val1 > val2) {
				return -1;
			} else if (val2 > val1) {
				return 1;
			}
			return o1.s.compareTo(o2.s);
		}

	}

	public static void printArray(int[] arr) {
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
		}
		System.out.println();
	}

	public static int[] getIntArray(BufferedReader br) throws IOException {
		String line = br.readLine();
		String[] values = line.split(" ");
		int[] arr = new int[values.length];
		for (int i = 0; i < values.length; i++) {
			arr[i] = Integer.parseInt(values[i]);
		}
		return arr;
	}

	public static long[] getLongArray(BufferedReader br) throws IOException {
		String line = br.readLine();
		String[] values = line.split(" ");
		long[] arr = new long[values.length];
		for (int i = 0; i < values.length; i++) {
			arr[i] = Long.parseLong(values[i]);
		}
		return arr;
	}

	public static Set<Integer> getFactors(int n) {
		Set<Integer> set = new HashSet<>();
		for (int i = 2; i <= Math.sqrt(n); i++) {
			if (n % i == 0) {
				set.add(i);
				set.add(n / i);
			}
		}
		return set;
	}

	public static int[] decode(String s) {
		String[] v = s.split("#");
		int[] arr = new int[2];
		arr[0] = Integer.parseInt(v[0]);
		arr[1] = Integer.parseInt(v[1]);
		return arr;
	}

	public static String encode(int a, int b) {
		return a + "#" + b;
	}

	public static long lcm(long a, long b) {
		BigInteger bigGCD = BigInteger.valueOf(a).gcd(BigInteger.valueOf(b));
		long val = bigGCD.longValue();
		long prod = a * b;
		return prod / val;
	}

	public static Set<Integer> getPrimes() {
		Set<Integer> primes = new HashSet<>();
		for (int i = 2; i < 20000; i++) {
			int fac = 0;
			for (int j = 1; j <= Math.sqrt(i); j++) {
				if (i % j == 0) {
					fac += 2;
				}
			}

			if (fac == 2) {
				primes.add(i);
			}
		}

		System.out.println(primes.size());

		return primes;
	}
	
	public static void dfs(int x,int y,Set<String> set,int n, int m,char p){
		System.out.println(x+" "+y);
		set.add(encode(x, y));
		
		if(p=='d' && (x+1>n || set.contains(encode(x+1, y)))){
			if(!set.contains(encode(x,y-1))){
				p='l';
			}else{
				p='r';
			}
		}else if(p=='l' && (y-1<=0 || set.contains(encode(x, y-1)))){
			if(!set.contains(encode(x-1,y))){
				p='u';
			}else{
				p='d';
			}
		}else if(p=='u' && (x-1<=0 || set.contains(encode(x-1, y)))){
			if(!set.contains(encode(x,y+1))){
				p='r';
			}else{
				p='l';
			}
		}else if(p=='r' && (y+1>m || set.contains(encode(x, y+1)))){
			if(!set.contains(encode(x+1,y))){
				p='d';
			}else{
				p='u';
			}
			p='d';
		}
		
//		System.out.println(p);
		
		if(x+1<=n && !set.contains(encode(x+1,y)) && p=='d'){
			dfs(x+1,y,set,n,m,p);
		}else if(y-1>=1 && !set.contains(encode(x,y-1)) && p=='l' ){
			dfs(x,y-1,set,n,m,p);
		}else if(x-1>=1 && !set.contains(encode(x-1,y)) &&  p=='u'){
			dfs(x-1,y,set,n,m,p);
		}else if(y+1<=m && !set.contains(encode(x,y+1)) && p=='r'){
			dfs(x,y+1,set,n,m,p);
		}
	}
	
	public static String solve(String s){
		int max =0;
		int count=0;
		for(int i=0;i<s.length();i++){
			if(s.charAt(i)=='1'){
				count++;
			}else{
				count=0;
			}
			if(count>max){
				max =count;
			}
		}
		
		String temp ="";
		for(int i=0;i<max;i++){
			temp+="1";
		}
		
		s= s.replaceFirst(temp, "");
		return s;
	}

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String line = br.readLine();
		int t = Integer.parseInt(line);

		while (t-- > 0) {
//			long[] arr = getLongArray(br);
			line = br.readLine();
			int n = Integer.parseInt(line);
			String ip = br.readLine();
			
			StringBuilder sb = new StringBuilder();
			
			for(int i=0;i<ip.length();i++){
				if(i%2==0){
					sb.append(ip.charAt(i));
				}
			}
			
			System.out.println(sb.toString());
			
			
		}
			

		}

}
