#include<bits/stdc++.h>
using namespace std;
#define int long long
const int mod=998244353;
int f[405][405][2];
int sz[405],a[405];
void add(int &x,int y){
	x=(x+y)%mod;
}
void dec(int &x,int y){
	x=(x-y+mod)%mod;
}
int ksm(int b,int n){
	int res=1;
	while(n){
		if(n&1) res=res*b%mod;
		b=b*b%mod; n>>=1;
	}
	return res;
}
int solve(int l,int r,int lst){
	if(l>r) return f[0][0][1]=1,0;
	int u=min_element(a+l,a+r+1)-a;
	int ls=solve(l,u-1,a[u]),rs=solve(u+1,r,a[u]);
	for(int i=0;i<=sz[ls];++i)
		for(int j=0;j<=sz[rs];++j){
			int A=f[ls][i][1]*f[rs][j][1]%mod,
				B=f[ls][i][0]*f[rs][j][0]%mod+f[ls][i][1]*f[rs][j][0]%mod+f[ls][i][0]*f[rs][j][1]%mod;
			B%=mod;
			add(f[u][i+j][1],A);
			add(f[u][i+j][0],B);
			dec(f[u][i+j+1][1],A);
			add(f[u][i+j+1][0],A);
		}
	sz[u]=sz[ls]+sz[rs]+1;
	for(int i=0;i<=sz[u];++i)
		f[u][i][0]=f[u][i][0]*ksm(ksm(2,sz[u]-i)-1,a[u]-lst)%mod,
		f[u][i][1]=f[u][i][1]*ksm(ksm(2,sz[u]-i),a[u]-lst)%mod;
	return u;
}
signed main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;++i)
		cin>>a[i];
	int u=solve(1,n,0);
	int ans=0;
	for(int i=0;i<=sz[u];++i)
		add(ans,f[u][i][0]),
		add(ans,f[u][i][1]);
	cout<<ans;
	return 0;
}