# 入力
A, B, C = map(int, input().split())
# X,Yを計算
X = B//C
Y = X*C
# YとAの関係によって条件分岐
if A <= Y:
print(Y)
else:
print(-1)
# before
A,B,C = map(int,input().split())
for i in range(1,1005):
check_num = i*C
if A<=check_num<=B:
print(check_num)
exit()
print(-1)
# after
# 入力
A, B, C = map(int, input().split())
# ループ回数について
# range(1000)で止めてしまうと、
# A=1000,B=1000,C=1の時にWAが存在する
# そもそもあまり大きい数ではないため、ちょっとだけマージンを持たせました
# B回のループでも問題無い気はしますね
# ループのstartについて
# 0倍=0を判定したとしても、
# 制約よりAは1以上なので、そこで終わることはないから問題無いですね
for i in range(1005):
check_num = i*C #Cの倍数を生成
if A <= check_num <= B: # もし、Cの倍数がA以上B以下であるなら、
print(check_num) # 出力して
exit() # 終了
print(-1)
# 入力
K = int(input())
A, B = map(int, input().split())
# 10進数への変換を行う関数を作成
def base10(x,K):
S = str(x) # Lを文字列に変換
ans = 0 # ans初期値
for i in S: # 1桁目から確認していく
ans *= K # ansをK倍する
ans += int(i) # ansにiを加える
return ans
ans = base10(A,K) * base10(B,K) # A,BをK進数から10進数表記にしたものの積が答え
print(ans) # 出力
# 入力
K = int(input())
A, B = map(int, input().split())
# 直接出力
print(int(str(A), K) * int(str(B), K))
# 入力
N = int(input())
A = list(map(int, input().split()))
X = int(input())
Asum = sum(A) # 数列Aの合計値を取得
ans_cnt = (X//Asum)*N # XにAが入る数 * N = 答えの○項目までは確実に入る
X -= (X//Asum)*Asum # XにAが入る数 * Xの総和を、Xから引くa
# 残りのXを、数列Aの中で何項目まで入るか確認していく
for i in A: # 数列Aの要素ループ
X -= i # Xから要素iを引く
ans_cnt += 1 # 答えの○項目に1を足す
if X < 0: # もしXが0を下回ったら打ち切り
break
# 出力
print(ans_cnt)
# 入力
N = int(input())
A = list(map(int, input().split()))
mod = 998244353 # mod変数設定
dp = [[0]*10 for i in range(N)] # dp用配列の準備
dp[0][A[0]] = 1 # 初期値:i=0:操作を1つも行っていない状態で、j=A[0]:列の先頭がA[0]である状態:1通り
for i in range(N-1):
for j in range(10):
# もしDP配列の値が0通り:その状態はありえない場合、スキップ
if dp[i][j] == 0:
continue
# x,yを取り出し、操作F、操作Gの値を求める
x = j
y = A[i+1]
F = (x+y) % 10
G = (x*y) % 10
# DPの値を更新する
dp[i+1][F] += dp[i][j]%mod
dp[i+1][G] += dp[i][j]%mod
# 操作終了後、数列の先頭が0~9である操作手順が何通りあるかを出力
for i in dp[-1]:
print(i%mod)