#include<cstdio>
#include<algorithm>
using namespace std;
#define ll long long int
#define mod 998244353
inline int inc(int a,int b){return a+b<mod?a+b:a+b-mod;}
inline int dec(int a,int b){return a<b?a-b+mod:a-b;}
inline int mul(int a,int b){return (int)((ll)a*b%mod);}
inline int pow(int a,int b)
{
	int res=1;
	while(b>0){
		if(b&1) res=mul(res,a);
		a=mul(a,a); b>>=1;
	}
	return res;
}
inline int inv(int x){return pow(x,mod-2);}

int n,x,y,ans=0;
int f[1000001];
int g[1000001];
int main(void)
{
	scanf("%d",&n);
	f[0]=g[0]=1;
	int i2=inv(2);
	for(int i=1;i<n;i++){
		f[i]=inc(mul(mul(i2,f[i-1]),f[i-1]+1),mul(f[i-1],g[i-1]));
		g[i]=inc(g[i-1],f[i-1]);
	}
	for(int i=1;i<n-1;i++)
		ans=inc(ans,mul(dec(f[i],f[i-1]),f[n-1-i]-1));
	x=f[n-1]; y=g[n-1];
	ans=inc(ans,mul(inv(3),mul(x,mul(x+1,x+2))));
	ans=inc(ans,mul(mul(x,x+1),y));
	ans=inc(ans,mul(x,mul(y,y+1)));
	printf("%d\n",ans-1);
	return 0;
}
/*
*/