#include <iostream>
#include <iterator>
#include <string>
#include <map>

using namespace std;

/* --- src2html のアルゴリズム ---
 * 変換のための辞書を作る --------------------------- [1]
 * 入力がなくなるまで ------------------------------- [2]
 *   入力文字を取り出す ----------------------------- [3]
 *   入力文字をkeyとして検索する -------------------- [4]
 *   変換辞書に登録されていたら、-------------------- [5]
 *      対応するvalue(文字列)をresultにコピーする。-- [6]
 *   変換の必要がないなら、 ------------------------- [7]
 *      そのままresultにコピーする。 ---------------- [8] 
 */
template<class InputIterator, class OutputIterator>
OutputIterator
src2html(InputIterator first, InputIterator last, OutputIterator result) {
  map<char,string> conv; // [1]
  conv['&'] = "&amp;";
  conv['"'] = "&quot;";
  conv['<'] = "&lt;";
  conv['>'] = "&gt;"; 

  while ( first != last ) { // [2]
    char ch = *first++; // [3]
    map<char,string>::iterator i = conv.find(ch); // [4]
    if ( i != conv.end() ) // [5]
      result = copy(i->second.begin(), i->second.end(), result); // [6]
    else // [7]
      *result++ = ch; // [8]
  }
  return result;
}

/*
 * お試し: 標準入力(cin)から文字列を読み出し、HTML変換を施して
 *         標準出力(cout)に出力する。
 * このソースをコンパイルし、生成された src2html.exe を使って:
 *   src2html < src2html.cpp > src2html.html
 * すれば、このソースをHTML変換したファイルsrc2html.htmlができあがる。
 * Webブラウザでブラウズしてみてほしい。
 */
int main() {
  ostreambuf_iterator<char> result(cout);

  string pre  = "<HTML><BODY><PRE>";
  copy(pre.begin(), pre.end(), result);

  istreambuf_iterator<char> input(cin);
  istreambuf_iterator<char> last;
  src2html(input, last, result);

  string post = "</PRE></BODY></HTML>";
  copy(post.begin(), post.end(), result);
  return 0;
}