def cmb(n, r, mod):

    if ( r<0 or r>n ):

        return 0

    r = min(r, n-r)

    return g1[n] * g2[r] * g2[n-r] % mod



mod = 998244353 #出力の制限

N = 10**6

g1 = [1, 1] # 元テーブル

g2 = [1, 1] #逆元テーブル

inverse = [0, 1] #逆元テーブル計算用テーブル



for i in range( 2, N + 1 ):

    g1.append( ( g1[-1] * i ) % mod )

    inverse.append( ( -inverse[mod % i] * (mod//i) ) % mod )

    g2.append( (g2[-1] * inverse[-1]) % mod )



N, A, B, K = list(map(int, input().split()))

ans = 0

for i in range(N+1):

  m = K-A*i

  if m%B!=0:

    continue

  ans += cmb(N,i,mod)*cmb(N,m//B,mod)

  ans %= mod



print(ans)
def cmb(n, r, mod):

    if ( r<0 or r>n ):

        return 0

    r = min(r, n-r)

    return g1[n] * g2[r] * g2[n-r] % mod



mod = 998244353 #出力の制限

N = 10**6

g1 = [1, 1] # 元テーブル

g2 = [1, 1] #逆元テーブル

inverse = [0, 1] #逆元テーブル計算用テーブル



for i in range( 2, N + 1 ):

    g1.append( ( g1[-1] * i ) % mod )

    inverse.append( ( -inverse[mod % i] * (mod//i) ) % mod )

    g2.append( (g2[-1] * inverse[-1]) % mod )



N,A,B,K = list(map(int, input().split()))

ans = 0

for i in range(N+1):

  if (K-A*i)%B!=0:

    continue

  j = (K-A*i)//B

  m = cmb(N,i,mod)*cmb(N,j,mod)%mod

  ans += m

  ans %= mod

print(ans)
def cmb(n, r, mod):
    if r < 0 or r > n:
        return 0
    r = min(r, n - r)
    return g1[n] * g2[r] * g2[n - r] % mod


mod = 998244353  # 出力の制限
N = 10**6
g1 = [1, 1]  # 元テーブル
g2 = [1, 1]  # 逆元テーブル
inverse = [0, 1]  # 逆元テーブル計算用テーブル
for i in range(2, N + 1):
    g1.append((g1[-1] * i) % mod)
    inverse.append((-inverse[mod % i] * (mod // i)) % mod)
    g2.append((g2[-1] * inverse[-1]) % mod)
N, A, B, K = list(map(int, input().split()))
ans = 0
for i in range(N + 1):
    m = K - A * i
    if m % B != 0:
        continue
    ans += cmb(N, i, mod) * cmb(N, m // B, mod)
    ans %= mod
print(ans)

def cmb(n, r, mod):
    if r < 0 or r > n:
        return 0
    r = min(r, n - r)
    return g1[n] * g2[r] * g2[n - r] % mod


mod = 998244353  # 出力の制限
N = 10**6
g1 = [1, 1]  # 元テーブル
g2 = [1, 1]  # 逆元テーブル
inverse = [0, 1]  # 逆元テーブル計算用テーブル
for i in range(2, N + 1):
    g1.append((g1[-1] * i) % mod)
    inverse.append((-inverse[mod % i] * (mod // i)) % mod)
    g2.append((g2[-1] * inverse[-1]) % mod)
N, A, B, K = list(map(int, input().split()))
ans = 0
for i in range(N + 1):
    if (K - A * i) % B != 0:
        continue
    j = (K - A * i) // B
    m = cmb(N, i, mod) * cmb(N, j, mod) % mod
    ans += m
    ans %= mod
print(ans)

-    m = K - A * i -    if m % B != 0: +    if (K - A * i) % B != 0: -    ans += cmb(N, i, mod) * cmb(N, m // B, mod) +    j = (K - A * i) // B +    m = cmb(N, i, mod) * cmb(N, j, mod) % mod +    ans += m