#include using namespace std; using ll = long long; using ld = long double; const ll INF = LLONG_MAX / 4; #define rep(i, a, b) for(ll i = a; i <(b); i++) #define all(a) begin(a),end(a) #define sz(a) ssize(a) bool chmin(auto& a,auto b){return a > b ? a = b,1 : 0;} bool chmax(auto& a,auto b){return a < b ? a = b,1 : 0;} const ll mod = 998244353; int main(){ cin.tie(0)->sync_with_stdio(0); int n; cin >> n; vector a(n); rep(i,0,n) cin >> a[i]; sort(all(a)); if(n % 2 == 0) { vector cnt(10); rep(i,0,n){ cnt[a[i]]++; } vector nkr; rep(i,0,10){ if(cnt[i] % 2 == 1){ nkr.push_back(i); } } ll ans = INF; rep(i,0,10){ vector nokori = nkr; if(cnt[i] >= 2) nokori.push_back(i); if(cnt[i] >= 2) nokori.push_back(i); sort(all(nokori)); do { int m = nokori.size(); ll l = 0; ll r = 0; rep(i,0,m/2){ l = l * 10 + nokori[i]; } rep(i,m/2,m){ r = r * 10 + nokori[i]; } ans = min(ans, abs(l - r)); } while(next_permutation(all(nokori))); } cout << ans % mod << endl; } else { vector l,r; l.push_back(a[0]); rep(i,1,n) { if(i >= n-i) break; l.push_back(a[i]); r.push_back(a[n-i]); } ll L = 0, R = 0; rep(i,0,l.size()) L = (L*10 + l[i]) % mod; rep(i,0,r.size()) R = (R*10 + r[i]) % mod; cout << (L - R + mod) % mod << endl; } }