A bracket sequence is a string containing only characters "(" and ")". A regular bracket sequence is a bracket sequence that can be transformed into a correct arithmetic expression by inserting characters "1" and "+" between the original characters of the sequence. For example, bracket sequences "()()" and "(())" are regular (the resulting expressions are: "(1)+(1)" and "((1+1)+1)"), and ")(", "(" and ")" are not.

Subsequence is a sequence that can be derived from another sequence by deleting some elements without changing the order of the remaining elements.

You are given a regular bracket sequence s and an integer number k. Your task is to find a regular bracket sequence of length exactly k such that it is also a subsequence of s.

It is guaranteed that such sequence always exists.

Input

The first line contains two integers n and k (2 ≤ k ≤ n ≤ 2 ⋅ 10^5, both n and k are even) — the length of s and the length of the sequence you are asked to find.

The second line is a string s — regular bracket sequence of length n.

Output

Print a single string — a regular bracket sequence of length exactly k such that it is also a subsequence of s.

It is guaranteed that such sequence always exists.

Examples

Input

6 4
()(())


Output

()()


Input

8 8
(()(()))


Output

(()(()))
 // package Jobeel;

import java.util.*;
import java.io.*;
import java.lang.*;
import java.math.*;
import java.util.Map.*;
public class codeforces {
     static int count =0;
     static boolean f=false;
     static int [] arr;
	static 	PrintWriter pw=new PrintWriter(System.out);
	static void bruteforce(int index,int mask) {
		if(index==arr.length) {
			int sum=0;
			for(int i=0;i<arr.length;i++)
				if((mask & 1<<i)!=0) sum+=arr[i];
			if(sum==count-sum) f=true;
			return;
		}
		bruteforce(index+1, mask|1<<index);
		bruteforce(index+1, mask);
	}
	public static boolean check(int x) {
		HashSet<Integer> set=new HashSet<>();
		int size=(""+x).length();
		while(x>0) {
			set.add(x%10);
			x/=10;
		}
		return set.size()==size;
	}
	static boolean isPower(long x, long y) { 
       long res1 = (long)Math.log(y) /  (long)Math.log(x); 
      double res2 = Math.log(y) /   Math.log(x);  
      return (res1 == res2); 
} 
	static long closestNumber(long n, long m) 
    { 
        long q = n / m; 
           
        long n1 = m * q; 
           
        long n2 = (n * m) > 0 ? (m * (q + 1)) : (m * (q - 1)); 
           
        if (Math.abs(n - n1) < Math.abs(n - n2)) 
            return n1;           
        return n2;     
    } 
	public static void main(String [] args) throws IOException, InterruptedException {
		Scanner sc=new Scanner(System.in);
		int x=sc.nextInt(); int k=sc.nextInt();
		char [] ch=sc.next().toCharArray();
		Stack<Integer> positions=new Stack<>();
		Stack<Character> stack=new Stack<>();
		StringBuilder sb=new StringBuilder();
		int i=0;
		for(;i<x && k>0;i++) {
			if(ch[i]=='(') {
				stack.push('('); positions.push(i);
			}else {
				stack.pop(); positions.pop();
				k-=2;
			}
		}
		while(!positions.isEmpty()) ch[positions.pop()]='1';
		for(int j=0;j<i;j++)
			if(ch[j]!='1') sb.append(ch[j]);
		pw.print(sb);
		pw.flush();
		pw.close();
	}
//	int max =  (int) (Math.sqrt(n) + 1);
//	for (int i = 3; i <= max; i = i + 2) {
//	}
	static class pair implements Comparable<pair>{
		String  name; int x,y ;
		public pair(String name , int x) {
			this.name=name; this.x=x;
		}
		
		public pair (int x,int y) {
			this.x=x; this.y=y;
		}
		public int compareTo(pair o) {
			if(!name.equals(o.name))
				return name.compareTo(o.name);
			return x-o.x;
		}
		public String toString() {
			return name +" "+x;
		}
	}

	static class Scanner {
		StringTokenizer st;
		BufferedReader br;
 
		public Scanner(InputStream system) {
			br = new BufferedReader(new InputStreamReader(system));
		}
 
		public Scanner(String file) throws Exception {
			br = new BufferedReader(new FileReader(file));
		}
 
		public String next() throws IOException {
			while (st == null || !st.hasMoreTokens())
				st = new StringTokenizer(br.readLine());
			return st.nextToken();
		}
		public String nextLine() throws IOException {
			return br.readLine();
		}
 
		public int nextInt() throws IOException {
			return Integer.parseInt(next());
		}
 
		public double nextDouble() throws IOException {
			String x = next();
			StringBuilder sb = new StringBuilder("0");
			double res = 0, f = 1;
			boolean dec = false, neg = false;
			int start = 0;
			if (x.charAt(0) == '-') {
				neg = true;
				start++;
			}
			for (int i = start; i < x.length(); i++)
				if (x.charAt(i) == '.') {
					res = Long.parseLong(sb.toString());
					sb = new StringBuilder("0");
					dec = true;
				} else {
					sb.append(x.charAt(i));
					if (dec)
						f *= 10;
				}
			res += Long.parseLong(sb.toString()) / f;
			return res * (neg ? -1 : 1);
		}
 
		public char nextChar() throws IOException {
			return next().charAt(0);
		}
 
		public Long nextLong() throws IOException {
			return Long.parseLong(next());
		}
 
		public boolean ready() throws IOException {
			return br.ready();
		}
		public int[] nextIntArray(int n) throws IOException {
            int[] a = new int[n];
            for (int i = 0; i < n; i++)
                a[i] = nextInt();
            return a;
        }
        public long[] nextLongArray(int n) throws IOException {
            long[] a = new long[n];
            for (int i = 0; i < n; i++)
                a[i] = nextLong();
            return a;
        }
        public HashMap<Integer, Integer> nextHashMap(int n) throws IOException{
        	HashMap<Integer, Integer> map =new HashMap<>();
        	for(int i=0;i<n;i++) {
        		int x=nextInt();
        		int b=map.getOrDefault(x, 0);
        		map.put(x, b+1);
        	}
        	return map;
        }
        public TreeMap<Integer, Integer> nextTreeMap(int n) throws IOException{
        	TreeMap<Integer, Integer> map =new TreeMap<>();
        	for(int i=0;i<n;i++) {
        		int x=nextInt();
        		int b=map.getOrDefault(x, 0);
        		map.put(x, b+1);
        		
        	}
        	return map;
        }
        public HashSet<Integer> nextHashSet (int n) throws IOException{
        	HashSet<Integer> set=new HashSet<>();
        	for(int i=0;i<n;i++) set.add(nextInt());
        	return set;
        }
        public TreeSet<Integer> nextTreeSet(int n) throws IOException{
        	TreeSet<Integer> set=new TreeSet<>();
        	for(int i=0;i<n;i++) set.add(nextInt());
        	return set;
        }
        public long[] nextLongArraySorted(int n) throws IOException {
        	long [] arr=nextLongArray(n);
        	Arrays.parallelSort(arr);
            return arr;
        }
        public int [] nextIntArraySorted(int n) throws IOException{
        	int [] arr=nextIntArray(n);
        	Arrays.parallelSort(arr);
        	return arr;
        }
	    public void waitForInput() throws InterruptedException {
			Thread.sleep(3000);
		}
	}
	}