#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,n) for (int i=a;i<=n;i++)
#define pb push_back
vector <string> s;
void show(string ss,int x,int y)
{
int f1=0;
for(;x<=y;x++)
{
if(ss[x]=='_')
{
f1=1-f1;
if(f1)cout<<"<em>";
else cout<<"</em>";
}
else if(ss[x]=='[')
{
int i=x,j=x,k=x,l=ss.size();
while(ss[i]!=']'&&i<l)i++;
while(ss[j]!='('&&j<l)j++;
while(ss[k]!=')'&&k<l)k++;
if(i!=l&&j!=l&&k!=l&&i==j-1)
{
cout<<"<a href="<<'"';
show(ss,j+1,k-1);
cout<<'"'<<">";
show(ss,x+1,i-1);
cout<<"</a>";
x=k;
}
}
else cout<<ss[x];
}
}
void show1(string ss)
{
int i=1;
while(ss[i]==' ')i++;
cout<<"<li>";
show(ss,i,ss.size()-1);
cout<<"</li>"<<endl;
}
void show2(string ss)
{
int cnt=0,i=0;
while(ss[i]=='#')
{
cnt++;
i++;
}
cout<<"<h"<<cnt<<">";
while(ss[i]==' ')i++;
show(ss,i,ss.size()-1);
cout<<"</h"<<cnt<<">"<<endl;
}
int main()
{
string line;
while(getline(cin,line))
{
s.pb(line);
}
//s={"# heading","","#### subdaa","A [link](http://exa_italic_e.com)[link](http://exa_italic_e.com)","dasdas asd","","* dasd","* asda"};
s.pb("");
int l=s.size(),i=-1;
while(1)
{
i++;
if(i>=l)break;
if(s[i]=="")continue;
if(s[i][0]=='*')
{
int j=i;
while(s[j][0]=='*')j++;
cout<<"<ul>"<<endl;
for(int k=i;i<j;i++)
{
show1(s[i]);
}
cout<<"</ul>"<<endl;
i=j-1;
}
else if(s[i][0]=='#')
{
show2(s[i]);
}
else
{
int j=i;
while(s[j]!="")j++;
cout<<"<p>";
for(;i<j;i++)
{
show(s[i],0,s[i].size()-1);
if(i!=j-1)cout<<endl;
else cout<<"</p>"<<endl;
}
i=j-1;
}
}
}