— This is not playing but duty as allies of justice, Nii-chan!

— Not allies but justice itself, Onii-chan!

With hands joined, go everywhere at a speed faster than our thoughts! This time, the Fire Sisters — Karen and Tsukihi — is heading for somewhere they've never reached — water-surrounded islands!

There are three clusters of islands, conveniently coloured red, blue and purple. The clusters consist of *a*, *b* and *c* distinct islands respectively.

Bridges have been built between some (possibly all or none) of the islands. A bridge bidirectionally connects two different islands and has length 1. For any two islands of the same colour, either they shouldn't be reached from each other through bridges, or the shortest distance between them is at least 3, apparently in order to prevent oddities from spreading quickly inside a cluster.

The Fire Sisters are ready for the unknown, but they'd also like to test your courage. And you're here to figure out the number of different ways to build all bridges under the constraints, and give the answer modulo 998 244 353. Two ways are considered different if a pair of islands exist, such that there's a bridge between them in one of them, but not in the other.
The first and only line of input contains three space-separated integers *a*, *b* and *c* (1 ≤ *a*, *b*, *c* ≤ 5 000) — the number of islands in the red, blue and purple clusters, respectively.
In the first example, there are 3 bridges that can possibly be built, and no setup of bridges violates the restrictions. Thus the answer is 2<sup class="upper-index">3</sup> = 8.

In the second example, the upper two structures in the figure below are instances of valid ones, while the lower two are invalid due to the blue and purple clusters, respectively.
1 1 1
8
1 2 2
63
1 3 5
3264
6 2 9
813023575
7 3 7
807577560
135 14 39
414849507
5000 5000 5000
986778560
2 1 1
18
1 1 3
32
1 2 3
156
4 1 2
315
5 9 4
661093467
4 2 5
326151
9 4 10
391175867
16 8 29
349763770
17 46 45
518654435
28 47 1
517406193
94 87 10
846321893
84 29 61
391253501
179 856 377
518957210
1925 1009 273
207866159
1171 2989 2853
234725427
3238 2923 4661
636587126
1158 506 4676
6109065
4539 2805 2702
356944655
4756 775 3187
56242066
4998 4998 4998
259368717
4996 1 5000
196902859
2048 4096 1024
445542375
5000 1 1
50020002
def f(a):
    M = 998244353
    an = 1
    for i in range(1, a + 1):
        an = ((an % M) * (i % M)) % M
    return an
def ncr(n, r):
    M = 998244353
    t1 = f(n)
    t2 = (f(r) % M * f(n - r) % M) % M
    return t1 * pow(t2, M - 2, M)
a, b, c = map(int, input().split())
ans = 1
def func(a, b):
    global ans
    M = 998244353
    if a > b: a, b = b, a
    count = 0
    for i in range(a + 1):
        t1 = ncr(a, i) % M
        t2 = (f(b) * pow(f(b - i), M - 2, M)) % M
        count += ((t1 * t2) % M)
    ans = ((ans % M) * (count % M)) % M
func(a, b)
func(b, c)
func(c, a)
print(int(ans))
			 		 		   			  	   						 	