"""最一開始的AC
a,b,c,d=map(int, input().split())
s=str((a**b)%(c**d))
print(s[0:len(s)%3],end=" "*int(len(s)%3>0))
for i in range(len(s)%3,len(s),3):
print(s[i:i+3],end=" ")
"""
"""改成list comprehension
a,b,c,d=map(int, input().split())
s=str((a**b)%(c**d))
print(s[0:len(s)%3],end=" "*int(len(s)%3>0))
[print(s[i:i+3],end=" ") for i in range(len(s)%3,len(s),3)]
"""
"""變成字串相加在輸出
a,b,c,d=map(int, input().split())
s=str((a**b)%(c**d))
print((s[0:len(s)%3]+" "*int(len(s)%3>0))+" ".join([(s[i:i+3]) for i in range(len(s)%3,len(s),3)]))
"""
"""用lambda 把輸入和s兩行轉成一行
s=(lambda a,b,c,d:str((a**b)%(c**d)))(*list(map(int, input().split())))
print((s[0:len(s)%3]+" "*int(len(s)%3>0))+" ".join([(s[i:i+3]) for i in range(len(s)%3,len(s),3)]))
"""
"""用lambda 處理輸出
s=(lambda a,b,c,d:str((a**b)%(c**d)))(*list(map(int, input().split())))
(lambda s:print((s[0:len(s)%3]+" "*int(len(s)%3>0))+" ".join([(s[i:i+3]) for i in range(len(s)%3,len(s),3)])))(s)
"""
"""把s代入最後結果"""
(lambda s:print((s[0:len(s)%3]+" "*int(len(s)%3>0))+" ".join([(s[i:i+3]) for i in range(len(s)%3,len(s),3)])))((lambda a,b,c,d:str((a**b)%(c**d)))(*list(map(int, input().split()))))