#include #include using namespace std; using namespace atcoder; using ll = long long; using ld = long double; int main(){ ll n; cin >> n; vector num(10,0); ll c; for(ll i = 0; i < n; i++){ cin >> c; num[c]++; } if(n % 2 == 1){ deque big; deque small; ll s = (n-1)/2; for(ll i = 0; i < 10; i++){ for(ll t = 0; t < num[i]; t++){ big.push_back(i); } } for(ll i = 0; i < s; i++){ small.push_back(big.back()); big.pop_back(); } ll ans = 0; ll kake = 1; for(ll i = 0; i < s; i++){ ans += 9982443530; ans += (big.back() - small.back()) * kake; ans %= 998244353; kake *= 10; kake %= 998244353; big.pop_back(); small.pop_back(); } ans += big.back() * kake; ans %= 998244353; cout << ans << '\n'; }else{ vector nokori; vector ari(10,0); for(ll i = 0; i < 10; i++){ if(num[i] >= 2)ari[i] = 1; num[i] %= 2; if(num[i] == 1)nokori.push_back(i); } ll s = nokori.size()/2; ll minn = -1; for(ll i = 0; i < 10; i++){ if(i > 0 && ari[i] == 0)continue; vector nok = nokori; if(ari[i] == 1){ nok.push_back(i); nok.push_back(i); sort(nok.begin(),nok.end()); s++; } do{ ll a = 0; ll b = 0; for(ll t = 0; t < s; t++){ a *= 10; a += nok[t]; } for(ll t = 0; t < s; t++){ b *= 10; b += nok[t+s]; } if(abs(a-b) < minn || minn == -1){ minn = abs(a-b); } }while(next_permutation(nok.begin(),nok.end())); if(ari[i] == 1)s--; } cout << minn << '\n'; } return 0; }