# 신예지
거~짓~말
# 최서영
N,L,D=map(int, input().split())
time=[]
result=D
for i in range(N):
for j in range(L):
time.append(True)
for k in range(5):
time.append(False)
# 잘못됨.. 값이 안나옴!! 최
while(result<len(time)):
time.append(False) **# 인덱스 초과되는 경우, 가능한 값을 넣어줌!(이수열)**
if time[result]!=True:
break
else:
result+=D
print(result)
# 이수영
N, L, D = map(int, input().split())
timer = L # 소요 시간
ringtone = D # 벨이 울리는 타이밍
while True:
if timer > N*L+(N-1)*5: # 앨범이 끝났을 경우
timer = ringtone # 다음 벨이 울리는 시간
break
while timer > ringtone: # 노래 재생중에 울리는 벨 처리
ringtone += D
for i in range(timer, timer+5): # 조용한 구간
if i == ringtone: # 울릴 경우
timer = i
break
if i == timer:
break
timer += L+5 # 조용한 구간 + 음악 재생 시간
print(timer)

# 박성열
N,L,D=map(int,input().split())
o=(N*(L+5)-5)//D+2 #d list의 길이
d=[D*i for i in range(o)] #전화 울리는 시간list 생성
l=[i*(L+5)+j-5 for i in range(N+1)for j in range(5)] #전화 들을 수 있는 시간 list 생성
A=set(d)&set(l) #교집합 생성
if A:print(min(A)) #있으면 최소 원소 출력
else:print(d[-1]) #없으면 d의 마지막 원소 출력
# 여기
D = 0, 0+D, 0+2D, 0+3D...
D(n) = (n-1)*D, (n>=1) ->단순 반복 횟수
possibletime = L+1~5, 2L+1+5~5+5, 3L+1+10~5+10... #N번 반복
A(N) = N*L+(1~5)*N= N*(L+1~5), (N>=1) ->노래 곡 수
A(N) = N*L+{E+(N-1)*5} = N*L+N*5 -5+E = N*(L+5)+E-5