← Home
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))
}