#include using namespace std; typedef pair pii; typedef long long ll; const int N = 2000010, MOD = 998244353, INF = 0x3f3f3f3f; int n, m, w[N]; ll qmi(ll a, ll b, ll c) { ll res = 1; while (b) { if (b & 1) res = res * a % c; a = a * a % c; b >>= 1; } return res; } int c[N]; int main() { cin >> n; for (int i = 1; i < n + 1; i++) scanf("%d", w + i); ll res = 0; sort(w + 1, w + n + 1); if (n & 1) { res = w[1] * qmi(10, n >> 1, MOD) % MOD; for (int l = 2, r = n; l < r; l++, r--) res = (res - (w[r] - w[l]) * qmi(10, (r - l) >> 1, MOD) % MOD + MOD) % MOD; } else { for (int i = 1; i < n + 1; i++) c[w[i]]++; vector v; for (int i = 1; i < 10; i++) if (c[i] & 1) v.push_back(i); sort(v.begin(), v.end()); res = 1e18; do { ll sum = 0; int c = v.size() >> 1; for (int i = 0; i < v.size(); i += 2) { sum = sum + (i ? -1 : 1) * abs(v[i + 1] - v[i]) * qmi(10, --c, MOD); } res = min(res, sum); } while (next_permutation(v.begin(), v.end())); if (v.size() < 6) for (int i = 1; i < 10; i++) { if (c[i] < 2) continue; v.push_back(i), v.push_back(i); sort(v.begin(), v.end()); do { if (v[0] == v[1]) continue; ll sum = 0; int c = v.size() >> 1; for (int k = 0; k < v.size(); k += 2) { sum = sum + (k ? -1 : 1) * abs(v[k + 1] - v[k]) * qmi(10, --c, MOD); } res = min(res, sum); } while (next_permutation(v.begin(), v.end())); for (int k = 0; k < v.size(); k++) if (v[k] == i) { v.erase(v.begin() + k); break; } for (int k = 0; k < v.size(); k++) if (v[k] == i) { v.erase(v.begin() + k); break; } } } printf("%lld\n", res); return 0; }