← Home
#include <bits/stdc++.h>
using namespace std;

#define MAXN 1000006
#define sz(v) ((int)(v).size())

const int MOD = 998244353;

vector <int> z_function(string s)
{
	int n = sz(s);
	vector <int> z(n, 0);
	for (int i=1,l=0,r=0;i<n;i++){
		if (i <= r)
			z[i] = min(r-i+1, z[i-l]);
		while (i+z[i] < n && s[z[i]] == s[i+z[i]]) z[i]++;
		if (r < i+z[i]-1)
			l = i, r = i+z[i]-1;
	}
	return z;
}

int main()
{
	ios::sync_with_stdio(0); cin.tie(0);
	string S, L, R; int N;
	cin >> S >> L >> R; N = sz(S);
	auto z_l = z_function(L+'#'+S);
	auto z_r = z_function(R+'#'+S);
	vector <int> dp(N+1, 0), sum(N+2, 0);
	dp[N] = sum[N] = 1;
	for (int i=N;i--;){
		if (S[i] == '0'){
			if (L == "0") dp[i] = dp[i+1];
		}else if (i+sz(L) <= N){
			int s = i+sz(L), e = i+sz(R);
			{
				int len = z_l[sz(L)+i+1];
				if (len < sz(L) && L[len] > S[i+len]) s++;
			}
			if (i+sz(R) <= N){
				int len = z_r[sz(R)+i+1];
				if (len < sz(R) && R[len] < S[i+len]) e--;
			}
			e = min(e, N);
			if (s <= e)
				dp[i] = (sum[s]-sum[e+1]+MOD)%MOD;
		}
		sum[i] = (dp[i]+sum[i+1])%MOD;
	}
	printf("%d\n", dp[0]);
}