package main
import (
"io"
"os"
"strconv"
)
const mod int64 = 998244353
func main() {
data, _ := io.ReadAll(os.Stdin)
idx := 0
readInt := func() int {
for idx < len(data) && (data[idx] < '0' || data[idx] > '9') {
idx++
}
v := 0
for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
v = v*10 + int(data[idx]-'0')
idx++
}
return v
}
n := readInt()
var cnt [11]int64
var sumDig [11][10]int64
for i := 0; i < n; i++ {
x := readInt()
var d [10]int64
l := 0
for x > 0 {
d[l] = int64(x % 10)
x /= 10
l++
}
cnt[l]++
for k := 0; k < l; k++ {
sumDig[l][k] += d[k]
}
}
var pow10 [21]int64
pow10[0] = 1
for i := 1; i < 21; i++ {
pow10[i] = pow10[i-1] * 10 % mod
}
var ans int64
for p := 1; p <= 10; p++ {
if cnt[p] == 0 {
continue
}
for q := 1; q <= 10; q++ {
if cnt[q] == 0 {
continue
}
var part int64
for k := 0; k < p; k++ {
if k < q {
part += sumDig[p][k] * pow10[2*k+1]
} else {
part += sumDig[p][k] * pow10[q+k]
}
part %= mod
}
ans += part * cnt[q]
ans %= mod
part = 0
for k := 0; k < q; k++ {
if k < p {
part += sumDig[q][k] * pow10[2*k]
} else {
part += sumDig[q][k] * pow10[p+k]
}
part %= mod
}
ans += part * cnt[p]
ans %= mod
}
}
os.Stdout.WriteString(strconv.FormatInt(ans%mod, 10))
}