#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <vector>
#include <climits>
#include <queue>
#include <algorithm>
#include <cassert>
#include <cmath>
#define INF INT_MAX
#define NIL -1
#define PR(A) cout<<endl<<#A<<" = "<<A;
using namespace std;

void rem_1(vector<int>&a,int x){
    int min=INT_MAX;
    int index=-1;
    for(int i=0;i<a.size();i++){
        if(a[i]%3==x && a[i]!=INT_MIN && a[i]<min){
            min=a[i];index=i;
        }//end if
    }//end for
    a[index]=INT_MIN;
}//end rem_1
void largest_multiple(vector<int>&a){
    int count[3];
    for(auto i:a){
            count[i%3]++;
    }//end for1
    int sum=accumulate(a.begin(),a.end(),0);
    if(sum%3==1){
        if(count[1]>0){
            rem_1(a,1);
        }//end if
        else if(count[2]>1){
            rem_1(a,2);
            rem_1(a,2);
        }//end if
        else
        return ;
    }//end if
    else if(sum%3==2){
            if(count[2]>0){
            rem_1(a,2);
            }//end if
            else if(count[2]>1){
            rem_1(a,1);
            rem_1(a,1);
            }//end else if
            else
            return ;
    }//end else
    sort(a.begin(),a.end(),greater<int>());
    for(auto i:a){
        if(i==INT_MIN)
            return;
        cout<<i;
    }//end for
}//end largest_multiple
int main(){
vector<int>a{8, 1, 7, 6, 0};
largest_multiple(a);
return 0;
}







