#include<stdio.h>
#include<math.h>
#include<algorithm>
#include<queue>
#include<deque>
#include<stack>
#include<string>
#include<string.h>
#include<vector>
#include<set>
#include<map>
#include<bitset>
#include<stdlib.h>
#include<cassert>
#include<time.h>
#include<bitset>
using namespace std;
const long long mod=1000000007;
const long long inf=mod*mod;
const long long d2=(mod+1)/2;
const long double EPS=1e-13;
const long double PI=acos(-1.0);
int ABS(int a){return max(a,-a);}
long long ABS(long long a){return max(a,-a);}
long double ABS(long double a){return max(a,-a);}
char in[7100];
int A[3100];
int B[3100];
int lv[3100];
int use[3100];
int v[6100];
string dp[3100];
int n;
string pa(int a,int b){
	for(int i=0;i<6100;i++){
		v[i]=0;
	}
	for(int i=a;i<b;i++){
		v[A[i]]=v[B[i]]=1;
	}
	string ret="";
	for(int i=0;i<6100;i++){
		if(v[i])ret+=in[i];
	}
	return ret;
}
string calc(int a){
	if(dp[a]!="wolf")return dp[a];
	if(a==n)return dp[a]="";
	string ret=calc(a+1);
	if(A[a]<B[a]){
		int to=a;
		string tmp="ab";
		while(to<n&&A[to]<B[a]){
			to++;
		}
		tmp+=calc(to);
		if(ret<tmp)ret=tmp;
		return dp[a]=ret;
	}
	int at=a+1;
	int ar=A[a];
	while(at<n&&B[at]<ar){
		ar=A[at];
		at++;
	}
	string tmp=pa(a,at)+calc(at);
	if(ret<tmp)ret=tmp;
	return dp[a]=ret;

}
int main(){
	int a;scanf("%d",&a);
	n=a;
	scanf("%s",in);
	int as=0;
	int bs=0;
	for(int i=0;i<a*2;i++){
		if(in[i]=='a')A[as++]=i;
		if(in[i]=='b')B[bs++]=i;
	}
	for(int i=0;i<=a;i++){
		dp[i]="wolf";
	}
	string ret=calc(0);
	printf("%s\n",ret.c_str());
}