#include <stdio.h>
#include <stdlib.h>

main()
{
	int ci;
	char c;
	char oldchar;
	int state = 0;
	char buffer[80];
	int i;

	ci = getchar();
	c = (char)ci;
	while (ci != EOF)
	{
	   switch (state)
	   {
		case 0:
			// skip until "Subject" reached
			if (c != 'S')
				break;
			c=getchar();
			if (c != 'u')
				break;
			c=getchar();
			if (c != 'b')
				break;
			c=getchar();
			if (c != 'j')
				break;
			c=getchar();
			if (c != 'e')
				break;
			c=getchar();
			if (c != 'c')
				break;
			c=getchar();
			if (c != 't')
				break;
			c=getchar();
			if (c != ':')
				break;
			c=getchar();
			if (c != ' ')
				break;

			// now copy all characters until \n
			i=0;
			while (((c = getchar()) != '\n'))
			{
				buffer[i] = c;
				i++;
			}
			buffer[i] = '\0';

			printf("<title>%s</title>\n", buffer);
			printf("<body bgcolor=\"#00004c\" text=\"#c8c8c8\">");
			printf("<center><h1>%s</h1></center>\n", buffer);

			// now go into reading text of story
			state = 1;
			break;

		case 1:
			// now looking for [, {, <, ( copying characters
			if ((c == '[')||(c == '{')||(c == '<')||(c == '('))
				if (oldchar == '\n')
				{
					printf("<h3>[");
					state = 2;
					break;
				}
			printf("%c", c);
			break;

		case 2:
			// read character name until ], }, >, )
			if ((c == ']')||(c == '}')||(c == '>')||(c == ')'))
			{
				printf("]</h3>");
				state = 3;
				break;
			}
			else
			{
				printf("%c", c);
				break;
			}

		case 3:
			// now reading text.  when we get two \n in a row,
			//   that's a new paragraph.  when we hit [,<,{,(
			//   we go back to state 2.
			if ((c == '\n')&&(oldchar == '\n'))
			{
				printf("<p>\n");
				break;
			}

			if (c == '*')
			{
				state = 4;
				break;
			}
			
			if ((c == '[')||(c == '{')||(c == '<')||(c == '('))
				if (oldchar == '\n')
				{
					printf("<h3>[");
					state = 2;
					break;
				}
			printf("%c", c);
			break;

		case 4:
			// if we find a ** replace it and all other consecutive
			//   * with a horizontal rule.
			if (c == '*')
			{
				int numstars = 1;
				while (c == '*')
				{

					numstars++;

					oldchar = c;
					c = getchar();
				}
				if (numstars > 3)
					printf("<hr size=2>\n");
					else printf("<hr width=50%>\n");
			}
			else
			{
				// only one *, print it and this character
				printf("%c%c",oldchar,c);
				state=3;
				break;
			}

	   } // end switch

	   oldchar = c;
	   ci = getchar();
	   c = (char)ci;
	} // end while
}
