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

(()(()))
#include <bits/stdc++.h>
using namespace std;
const long long inf = 1LL << 62;
const int iinf = 1 << 30;
const double dinf = 1e17;
const int Mod = 1e9 + 7;
const int MAXBUF = 10000;
char buf[MAXBUF], *ps = buf, *pe = buf + 1;
bool isdigit(char n) {
  if (n >= '0' && n <= '9') return true;
  return false;
}
inline void rnext() {
  if (++ps == pe)
    pe = (ps = buf) +
         fread(buf, sizeof(char), sizeof(buf) / sizeof(char), stdin);
}
template <class T>
inline bool in(T &ans) {
  ans = 0;
  T f = 1;
  if (ps == pe) return false;
  do {
    rnext();
    if ('-' == *ps) f = -1;
  } while (!isdigit(*ps) && ps != pe);
  if (ps == pe) return false;
  do {
    ans = (ans << 1) + (ans << 3) + *ps - 48;
    rnext();
  } while (isdigit(*ps) && ps != pe);
  ans *= f;
  return true;
}
const int MAXOUT = 10000;
char bufout[MAXOUT], outtmp[50], *pout = bufout, *pend = bufout + MAXOUT;
inline void write() {
  fwrite(bufout, sizeof(char), pout - bufout, stdout);
  pout = bufout;
}
inline void out_char(char c) {
  *(pout++) = c;
  if (pout == pend) write();
}
inline void out_str(char *s) {
  while (*s) {
    *(pout++) = *(s++);
    if (pout == pend) write();
  }
}
template <class T>
inline void out_int(T x) {
  if (!x) {
    out_char('0');
    return;
  }
  if (x < 0) x = -x, out_char('-');
  int len = 0;
  while (x) {
    outtmp[len++] = x % 10 + 48;
    x /= 10;
  }
  outtmp[len] = 0;
  for (int i = 0, j = len - 1; i < j; i++, j--) swap(outtmp[i], outtmp[j]);
  out_str(outtmp);
}
inline long long lowbit(long long x) { return x & (-x); }
int dcmp(long double x) {
  if (fabs(x) <= 0) return 0;
  return x < 0 ? -1 : 1;
}
struct Point {
  long long x, y;
  Point(long long x = 0, long long y = 0) : x(x), y(y) {}
  Point operator-(const Point &a) const { return Point(x - a.x, y - a.y); }
  Point operator+(const Point &a) const { return Point(x + a.x, y + a.y); }
  bool operator==(const Point &a) const { return x == a.x && y == a.y; }
};
long long Cross(Point a, Point b) { return a.x * b.y - a.y * b.x; }
long long Dot(Point a, Point b) { return a.x * b.x + a.y * b.y; }
bool on_seg(Point p, Point a, Point b) {
  if (a == p || b == p) return 1;
  return Cross(p - a, b - a) == 0 && Dot(p - a, b - a) > 0;
}
bool Insect(Point p1, Point p2, Point p3, Point p4) {
  if (on_seg(p1, p3, p4) || on_seg(p2, p3, p4) || on_seg(p3, p1, p2) ||
      on_seg(p4, p1, p2))
    return 1;
  long long c1 = Cross(p2 - p1, p3 - p1), c2 = Cross(p2 - p1, p4 - p1);
  long long c3 = Cross(p4 - p3, p2 - p3), c4 = Cross(p4 - p3, p1 - p3);
  return c1 * c2 < 0 && c3 * c4 < 0;
}
char s[200005];
int n, m, top, ct;
int stk[200005], vis[200005];
char ans[200005];
void I_can_t_solve_it() {
  cin >> n >> m;
  top;
  m = n - m;
  memset(vis, 0, sizeof(vis));
  cin >> s;
  top = 0;
  ct = 0;
  for (int i = 0; i <= n - 1; i++) {
    if (s[i] == '(')
      stk[top++] = i;
    else {
      if (m)
        m -= 2, top--, vis[i] = 1, vis[stk[top]] = 1;
      else
        top--;
    }
  }
  for (int i = 0; i <= n - 1; i++) {
    if (vis[i]) continue;
    printf("%c", s[i]);
  }
  cout << endl;
}
int main() {
  int t = 1;
  for (int i = 1; i <= t; i++) {
    I_can_t_solve_it();
  }
  return 0;
}
