import re
raw =""whileTrue:try:
inputStr =input()
Str1 = re.sub("_(.*?)_","<em>\g<1></em>", inputStr)# re
Str2 = re.sub("\[(.*?)\]\((.*?)\)",'<a href="\g<2>">\g<1></a>', Str1)
raw += Str2 +'\n'except:break
list1 = raw.split('\n')
new =""
listflag =False
graphflag =Falsefor index inrange(len(list1)):
i = list1[index]
list2 = i.split(' ',1)if list2[0]:# 不为空if list2[0]=='*':# 无序列表if listflag ==False:
new +="<ul>\n"
listflag =True
new +="<li>"+ list2[1]+"</li>\n"ifnot list1[index +1].startswith('*'):
new +="</ul>\n"
listflag =Falseelif list2[0].count('#'):# 含# 标题
number =len(list2[0])
new +="<h{}>{}</h{}>".format(str(number), list2[1],str(number))+'\n'else:# 段落if graphflag ==False:
new +="<p>"
graphflag =True
new += i
if list1[index +1].startswith('*')or list1[index +1].startswith('#')orlen(list1[index +1])==0:
new +="</p>"
graphflag =False
new +="\n"print(new.strip('\n'))