# 入力
N = input()
# 出力
print(N.zfill(4))
# 愚直ループの例
# 入力
N, P = map(int, input().split())
A = list(map(int, input().split()))
# 変数初期化
ans = 0
# 愚直ループ
for i in A:
# もし点数がP以下なら、答えに+1加算
if i < P:
ans += 1
# 出力
print(ans)
# 格好良く書いてみた例
# 入力
N, P = map(int, input().split())
A = list(map(int, input().split()))
# 一発出力
print(sum(i<P for i in A))
# 入力部
N, M = map(int, input().split())
L = [] # L[選手番号][文字列(出した手一覧)]
# ソートの都合上、勝数はマイナスで扱う。
rank = [] # rank[i] = [x,y]:i位の人は、-x勝で選手番号y
for i in range(2*N):
L.append(input())
rank.append([0, i]) # 最初はみんな0勝
# Point1:勝敗関数。両者の手を併せたものを2文字の文字列として引数にする
def judge(hands):
if hands[0] == hands[1]: # あいこ
return -1 # Point3
if hands in ['GC', 'CP', 'PG']: # Point2:左側の手が勝った場合
return 0 # Point3
return 1 # Point3 その他=右側の手が勝った場合
# シミュレーション
# ラウンドを進める
for round in range(M):
# 勝数が多い人から順に見ていく。2人で戦わせるので、step2
for i in range(0, 2*N, 2):
playerA = rank[i][1]
A_hand = L[playerA][round]
playerB = rank[i+1][1]
B_hand = L[playerB][round]
# 勝敗判定
result = judge(A_hand+B_hand)
# もしあいこでは無かった場合、
if result != -1:
# 左側の手が勝った=選手番号2Nの人が勝った。右側の人が勝った=選手番号2N+1の人が勝った。
# Point3:i+resultで勝った人に勝数を与える。
rank[i+result][0] -= 1
# 勝敗順にソートする。勝敗数が一緒であれば、選手番号が小さい順に並ぶ。
rank.sort()
# 0-indexなので、選手番号に変換して出力
for _, i in rank:
print(i+1)
# 入力
N = int(input())
A = list(map(int, input().split()))
B = list(map(int, input().split()))
# 変数設定
mod = 998244353
M = 3001
dp = [[0]*(M+1) for i in range(N+1)]
# 便宜的に0,0を1に初期化する
dp[0][0] = 1
# ループ開始。A,Bのi要素目から一つずつ見ていくよ。
# 配るDPで考える。
for i in range(N):
a = A[i]
b = B[i]
# dp内側のループ
for j in range(M):
now_cnt = dp[i][j]
# もし0ならスキップ
if now_cnt == 0:
continue
# ここからいもす法
# 左側(プラス箇所)は、A[i]とjのうち大きい方
left = max(a, j)
right = b+1
dp[i+1][left] += now_cnt
dp[i+1][right] -= now_cnt
# いもす法を累積和で整理。割った余りにしておく
for j in range(1, M+1):
dp[i+1][j] = (dp[i+1][j] + dp[i+1][j-1]) % mod
# 最終列の和を割った余り
print(sum(dp[-1]) % mod)