#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <vector>
using namespace std;
int abs(int x){
if(x<0)
return -x;
return x;
}
vector<int> vec1;
vector<int> vec2;
vector<int> ans;
int n,k;
void make2()
{
ans.push_back(vec2[0]);
ans.push_back(vec2[1]);
vec2.erase(vec2.begin(),vec2.begin()+2);
}
void make1()
{
ans.push_back(vec1[0]);
ans.push_back(vec1[1]);
vec1.erase(vec1.begin(),vec1.begin()+2);
}
int
main()
{
while(scanf("%d%d",&n,&k)!=EOF)
{
vec1.clear();
vec2.clear();
ans.clear();
for(inti=0;i<n;i++)
{
int a;
scanf("%d",&a);
if(a<0)
vec2.push_back(a);
else
vec1.push_back(a);
}
if(n==k)
{
sort(vec1.begin(),vec1.end());
sort(vec2.begin(),vec2.end());
reverse(vec1.begin(),vec1.end());
reverse(vec2.begin(),vec2.end());
for(inti=0;i<vec1.size();i++)
cout<<vec1[i]<<"";
for(inti=0;i<vec2.size();i++)
cout<<vec2[i]<<"";
cout<<'\n';
}
else
{
sort(vec1.begin(),vec1.end());
sort(vec2.begin(),vec2.end());
reverse(vec1.begin(),vec1.end());
//reverse(vec2.begin(),vec2.end());
if(k&1&&vec1.size()==0)
{
reverse(vec2.begin(),vec2.end());
for(int i=0;i<k;i++)
ans.push_back(vec2[i]);
}
else
{
if(k&1)
{
if(vec1.size()>0)
{
ans.push_back(vec1[0]);
vec1.erase(vec1.begin(),vec1.begin()+1);
}
else
{
ans.push_back(vec2[vec2.size()-1]);
vec1.erase(vec2.end()-1,vec2.end());
}
k--;
}
for(inti=0;i<k/2;i++)
{
if(vec2.size()<=1){make1();}
elseif(vec1.size()<=1){make2();}
else
{
if(vec1[0]*vec1[1]<vec2[0]*vec2[1])
make2();
else
make1();
}
}
}
sort(ans.begin(),ans.end());
reverse(ans.begin(),ans.end());
cout<<ans[0];
for(inti=1;i<ans.size();i++)
cout<<''<<ans[i];
cout<<"\n";
}
}
}