MOD=998244353
N=gets.to_i
D=gets.split.map(&:to_i)

data = Array.new(N, 0)
D.each { |d| data[d] += 1 }

max = D.max
flag = true
ans = 1
(1..max).each do |i|
    t, k = data[i], data[i-1]
    if t == 0
        flag = false
        break
    end
    ans = (ans * (k ** t)) % MOD
end

if flag && (data[0]==1 || D[0] == 0)
    puts ans
else
    puts 0
end
