//Feladat: i622
//szerzo: Sógor-Jász Soma 343836399379 (8M)
//iskola: Radnóti Miklós Kísérleti Gimnázium Szeged
//fordítóprogram: g++

#include <bits/stdc++.h>
using namespace std;

void eleje() { //kep inicializalasa
	cout <<"<?xml version=\"1.0\"?>" << endl;
	cout <<"<!DOCTYPE svg PUBLIC \"-//W3//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">" << endl; 
    cout <<"<svg xmlns= \"http://www.w3.org/2000/svg\" xmlns:xlink= \"http://www.w3.org/1999/xlink\" version=\"1.1\" width=\"200\" height=\"200\"> " << endl;
}

string szin_str(char szin) { //a szinek svg formatumra irasa
	stringstream ss;
	ss << "style=\"fill: ";
	switch(szin) {
		case 'F': ss << "white";break;
		case 'K': ss << "blue";break;
		case 'P': ss << "red";break;
		case 'Z': ss << "green";break;
		case 'S': ss << "yellow";break;
		case 'L': ss << "purple";break;
		case 'B': ss << "black";break;
	}
	ss <<";\"";
	return ss.str();
}

void teglalap(int x, int y, int meret, char szin) //egy kis negyzet kiirasa
{
	cout << "<rect x=\"" << x <<"\" y=\"" << y << "\" width=\"" <<meret << "\" height=\"10\" "<< szin_str(szin)<< "/>" <<endl;
}

void sor_kiirasa(int sor, vector<char>& v) { //negyzetenkent irom ki a sorokat, 10*10-es meretu minden 
	for(int i=0; i<v.size();i++)
		teglalap(i*10, sor*10, 10, v[i]);
}

void sor_kiirasa_teszt(int sor, vector<char>& v) { //ezt csak azert, hogy amig tesztelem, addig egyszerubb latni egy olyan kiirast, mint ami a feladatnal is volt
	for(int i=0; i<v.size();i++)
	   cout << v[i];
	cout << endl;
}

void vege() { // a kepet lezaro svg sorok
	cout << "</svg>" << endl;
}
int main() {
	string line;
	getline(std::cin, line);
	stringstream ss(line);
	int n,m; //meret
	ss >>n>>m;
	vector<char> v(m);
	int aktualis_sor = 1;
	 
	eleje ();

    //sorokat olvasunk EOF-ig
    while (getline(std::cin, line)) { 
        // soronkent dolgozzuk fel a bemenetet, v vektorban tartjuk karban, hogy melyik pozicio milyen szinu  
        //cout << line << endl;

		stringstream ss(line); //ezt hasznaljuk fel arra, hogy utana a megfelelo sorokba tudjuk beletenni a sorunk darabjait
		
		int sor, x, y;
		char szin; 
		ss >> sor;
		ss >> x;
		ss >> y;
		ss >> szin;
		ss.clear();

		//cout << "aktualis_sor: " << aktualis_sor << " sor: " << sor << " x: " << x << " y: " << y << endl;	

		if (aktualis_sor != sor) {
			for(int i=aktualis_sor; i<sor;i++)
				sor_kiirasa(aktualis_sor, v); 
			aktualis_sor = sor;
		}

		for(int j=x; j<=y; j++) {
			v[j-1] = szin;
		}

    } 

	for(int i=aktualis_sor; i<=n;i++)
		sor_kiirasa(aktualis_sor, v);

    vege ();

}
