#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int n;
const int mod = 998244353;
using ll = long long;

void add(int &a, int b)
{
	a += b;
	if (a >= mod)
		a -= mod;
}
void sub(int &a, int b)
{
	a -= b;
	if (a < 0)
		a += mod;
}
int mult(int a, int b)
{
	return ll(a) * b % mod;
}
int bp(int a, int b)
{
	if (b == 0)
	{
		return 1;
	}
	if (b % 2 == 0)
	{
		int bv = bp(a, b / 2);
		return mult(bv, bv);
	}
	int bv = bp(a, b - 1);
	return mult(bv, a);
}
vector<int>facts(20000007), ofacts(20000007), inv(20000007);
void calc()
{
	facts[0] = 1;
	ofacts[0] = 1;
	facts[1] = 1;
	ofacts[1] = 1;
	inv[1] = 1;
	for (int i = 2; i < 20000006; ++i)
	{
		int c1 = mod / i, md = mod % i, val=inv[md];
		val = mult(val, c1);
		inv[i] = mod - val;
	//	inv[i] = bp(i, mod - 2);
		facts[i] = mult(facts[i - 1], i);
		ofacts[i] = mult(ofacts[i - 1], inv[i]);
	}
}
int c(int a, int b)
{
	if (a < 0)
	{
		return 0;
	}
	if (b < 0)
	{
		return 0;
	}
	if (a > b)
	{
		return 0;
	}
	int bv = facts[b];
	bv = mult(bv, ofacts[b - a]);
	bv = mult(bv, ofacts[a]);
	return bv;
}
int main()
{
	calc();
	int n, a, b, ans=0;
	//cout << (inv[3]*3)%mod <<endl;
	cin >> n >> b >> a;
	b++;
	a++;
	for (int d = 0; d <= n; d++)
	{
		int anew = a - 1, bnew = b - 1 - d, turns = n - anew - bnew;
		if (turns>=0)
		{
			if (bnew >=0)
			{
				int val1 = 0, val2 = 0;
				if (anew > 0)
				{
					add(val1, c(bnew, bnew + anew - 1));
					sub(val1, c(bnew - 1, bnew + anew - 1));
				}
				else
				{
					if (anew == 0)
					{
						if (bnew == 0)
						{
							val1 = 1;
						}
					}
				}
				add(val2, c(turns , turns + d));
				sub(val2, c(turns , turns + d - 1));
				//cout << anew << ' ' << bnew << ' ' << turns << ' '<<d<<' '<<val1<<' '<<val2<<endl;
				add(ans, mult(val1, val2));
			}
		}
	}
	cout << ans << endl;
	cin >> n;
}
