#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const long long N=1e5+5,M=1e16+9;
string s;
long long d[N],a[N],b[N],c[N],p[N],g[N],gg[N];
long long n;
void make1(){
	cout<<a[1];
	for(long long i=2;i<=n;i++)cout<<s[0]<<a[i];
}
void make2(){
	if(s[0]=='+' || s[1]=='+'){
		cout<<a[1];
		for(long long i=2;i<=n;i++)cout<<'+'<<a[i];
	}else{
		cout<<a[1];
		for(long long i=2;i<=n;i++){
			if(a[i]==0)cout<<'-';else 
			cout<<'*';
			cout<<a[i];
		}
	}
}
bool check(long long l,long long r){
	long long t=1ll;
	for(;l<=r;){
		t*=(long long)a[l++];
		if(t>M)return 1;
	}
	return 0;
}
void find(long long l,long long r){
	
	
	
	if(check(l,r)){
		c[l]++;c[r]--;
		return ;
	}
	
	d[l]=a[l];
	g[l]=l;
	p[l+1]=l;
	for(long long i=l+1;i<=r;i++)
		if(a[i]==1){
			d[i]=d[i-1]+1;
			g[i]=i;
			p[i+1]=p[i];
		}else{
			p[i+1]=i;
			long long sum=a[i];
			for(long long j=i;j;j=p[j],sum*=a[j])
				if(sum+d[j-1]>=d[i]){
					d[i]=sum+d[j-1];
			//		cout<<j<<' '<<d[i]<<endl;	
					g[i]=j;
				}
		}
//	cout<<d[1]<<' '<<d[2]<<endl;
//	cout<<g[1]<<' '<<g[2]<<endl;
	while(r!=l-1){
		if(g[r]!=r){
			c[g[r]]++;
			c[r]--;
		}
		r=g[r]-1;
	}
}
void make3(){
	long long x=0; 
	//cout<<"???????????";
	for(long long i=1;i<=n;i++)
		if(a[i]!=0)b[i]=b[i-1]+1;
	for(long long i=1;i<=n;i++)//????
		if(b[i] && !b[i+1]){
			long long r=i,l=i-b[i]+1;
			while(a[r]==1)r--;
			while(a[l]==1)l++;
			if(l>=r)continue;
			
			find(l,r);
			
	/*		while(x<r){
				cout<<a[++x];
				c[x]+=c[x-1];
				if(x!=n)if(c[x])cout<<"*";else cout<<"+";
			}*/
		}
	for(long long i=1;i<n;i++){
		cout<<a[i];
		c[i]+=c[i-1];
		if(c[i])cout<<"*";else cout<<"+";
	}
	cout<<a[n];
/*	while(x<n){
		cout<<a[++x];
		c[x]+=c[x-1];
		if(x!=n)if(c[x])cout<<"*";else cout<<"+";
	}*/
//	cout<<a[n];
}
int main(){
	scanf("%lld",&n);
//	if(n==100000)cout<<"666";//5456456564 
	for(long long i=1;i<=n;i++)scanf("%lld",&a[i]);
	
	cin>>s;
	if(s.length()==1)make1();else
	if(s.length()==2 && (s[0]=='-' || s[1]=='-'))make2();else
	make3();
}

/*
7
0 1 2 3 4 1 0
*+-

*/
