#include <bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
#define FOR(i, a, b) for (ll i = (a); i <= (b); i++)
#define FORX(i, a, b, x) for (ll i = (a); i <= (b); i+=x)
#define debug(x) cout <<" || "<< #x << " is= " << x <<endl; //use for debug
#define read(a) ll a; cin >> a;
#define FORD(i, a, b) for (ll i = (a); i >= (b); i--)
#define pb(a) push_back(a)
#define pf(a) push_front(a)
#define fast_io ios_base::sync_with_stdio(false),cin.tie(NULL),cout.tie(NULL)
#define ll long long int
#define vi         vector<int>
#define vll        vector<ll>
#define vpii       vector<pair<int,int>>
#define pr         pair<long double,long double>
#define vpll       vector<pair<ll,ll>>
#define all(v)     v.begin(),v.end()
#define rall(v)    v.rbegin(),v.rend()  //reverse of above;
#define sz(container) int((container).size())
#define cut(x) {cout<<x<<"\n"; continue;}
#define setprec(x) cout << fixed << showpoint << setprecision(15)<<x<<"\n";
#define time cout << clock() / double(CLOCKS_PER_SEC) << endl;
#define endl '\n';
#define mod 1000000007
#define mod1 998244353
#define pi 3.141592653589793238
#define fi first
#define se second
using namespace std;
using namespace __gnu_pbds;
typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> ordered_set; 

//░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

//*s.find_by_order() ->returns an iterator to the k-th largest element (counting from zero);
//s.order_of_key() ->number of elements strictly smaller then our item;
//st.rbegin()->second; last element in set
//st.erase(prev(st.end())); delete last element in set;
//sort(a+1,a+n+1,[](ll x,ll y){return abs(x)>abs(y);});
//sort(v.begin(), v.end(), greater<int>()); -> not sure work for first also if second are equal;
//q=lower_bound(all(v[a[i]]),i)-v[a[i]].begin()+1;
// s.substr(start_ind,length);
// vpll shift={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}} ->shift operator;
//bool comp(pr a,pr b){return a.second<b.second;} // use for differentiate order of comparision;
// cntbit(x) __builtin_popcount(x); -> no. of bits in given no.;

//░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
const ll MAXN=2e7+5;
const ll inf=1e18+5;


int main()
{
  fast_io;
  #ifndef ONLINE_JUDGE
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);
  #endif
  //“Don’t wish it were easier. Wish you were better.” – Jim Rohn;
  ll n; cin>>n;
  long double a[10];
  FOR(i,1,4) cin>>a[i-1];

  long double h,k,x,y,radius;
  h=(a[0]+a[2])/2.0;
  k=(a[1]+a[3])/2.0;

  // shift p0 wrt h,k ant. clkwise;

  long double theta=2*pi/(n*1.0);
  //debug(theta);
  a[0]-=h,a[1]-=k;
  
  x=a[0]*cos(theta)-a[1]*sin(theta);
  y=a[0]*sin(theta)+a[1]*cos(theta);
  
  x+=h,y+=k;
  setprec(x); setprec(y);
 

 }
#include<iostream>
#include<algorithm>
#include<cstring>

using namespace std;

typedef pair<int, int> PII;
const int N = 4e5 + 10;

PII a[N];
int b[N];
int stk[N], top;

int main(){
    int n;  scanf("%d", &n);
    
    for(int i = 1; i <= 2 * n; i ++){
        scanf("%d", &a[i].first);
        a[i].second = i;
    }
    
    sort(a + 1, a + 1 + 2 * n);
    for(int i = 1; i <= n; i ++)
        b[a[i].second] = 1;
        
    for(int i = 1; i <= 2 * n; i ++)
        if(!top){
            printf("(");
            stk[++ top] = i;
        }
        else{
            if(b[i] == b[stk[top]]){
                printf("(");
                stk[++ top] = i;
            } 
            else{
                printf(")");
                top --;
            }
        }
    
    return 0;
}