#include using namespace std; const long long MOD = 998244353; // cntの前or後ろからdigit桁取った数 long long make_num(const vector &cnt, int digit, bool reversed = false, long long st = 0) { long long res = st; if (!reversed) { for (int i = 1; i <= 9 && digit > 0; i++) { for (int j = 0; j < cnt[i] && digit > 0; j++) { res = res*10+i; digit--, res%=MOD; } } } else { for (int i = 9; i >= 1 && digit > 0; i--) { for (int j = 0; j < cnt[i] && digit > 0; j++) { res = res*10+i; digit--, res%=MOD; } } } return res; } int main() { int N; cin >> N; vector c(N), cnt(10); for (int i = 0; i < N; i++) cin >> c[i], cnt[c[i]]++; if (N%2 == 1) { // N = 2k+1 long long x = make_num(cnt, (N+1)/2), y = make_num(cnt, N/2, true); cout << (x-y+MOD)%MOD << endl; } else { // N = 2k long long ans = (1LL<<60); // inf vector cnt_subset(10); int sum = 0; for (int i = 1; i <= 9; i++) cnt_subset[i] = cnt[i]%2, sum += cnt[i]%2; if (sum == 0) ans = 0; // 2数の10^lの位の数字が等しいとき for (int i = 1; i <= 9; i++) { for (int j = i+1; j <= 9; j++) { if (cnt_subset[i] == 0 || cnt_subset[j] == 0) continue; cnt_subset[i]--, cnt_subset[j]--; // i