#include <complex>
#include <iostream>
int main() {
double const xmin = -2, xmax = 1, ymin = -1, ymax = 1;
int const cols = 80;
double const inc = ( xmax - xmin ) / cols;
double const threshold = 1e6;
long const timeout = std::exp( 6 );
char const *colors = " .xOX";
for ( double y = ymax; y > ymin; y -= inc ) {
for ( double x = xmin; x < xmax; x += inc ) {
std::complex< double > c0( x, y ), c = c0;
for ( long i = 0; i != timeout; ++ i ) {
c = c * c + c0;
if ( abs( c ) > threshold ) {
std::cout << colors[ int( std::log( i ) ) ];
goto escaped;
}
}
std::cout << '$';
escaped:;
}
std::cout << '\n';
}
}
I2luY2x1ZGUgPGNvbXBsZXg+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCmludCBtYWluKCkgewogICAgZG91YmxlIGNvbnN0IHhtaW4gPSAtMiwgeG1heCA9IDEsIHltaW4gPSAtMSwgeW1heCA9IDE7CiAgICBpbnQgY29uc3QgY29scyA9IDgwOwogICAgZG91YmxlIGNvbnN0IGluYyA9ICggeG1heCAtIHhtaW4gKSAvIGNvbHM7CiAgICAKICAgIGRvdWJsZSBjb25zdCB0aHJlc2hvbGQgPSAxZTY7CiAgICBsb25nIGNvbnN0IHRpbWVvdXQgPSBzdGQ6OmV4cCggNiApOwogICAgCiAgICBjaGFyIGNvbnN0ICpjb2xvcnMgPSAiICAueE9YIjsKICAgIAogICAgZm9yICggZG91YmxlIHkgPSB5bWF4OyB5ID4geW1pbjsgeSAtPSBpbmMgKSB7CiAgICAgICAgZm9yICggZG91YmxlIHggPSB4bWluOyB4IDwgeG1heDsgeCArPSBpbmMgKSB7CiAgICAgICAgICAgIHN0ZDo6Y29tcGxleDwgZG91YmxlID4gYzAoIHgsIHkgKSwgYyA9IGMwOwogICAgICAgICAgICBmb3IgKCBsb25nIGkgPSAwOyBpICE9IHRpbWVvdXQ7ICsrIGkgKSB7CiAgICAgICAgICAgICAgICBjID0gYyAqIGMgKyBjMDsKICAgICAgICAgICAgICAgIGlmICggYWJzKCBjICkgPiB0aHJlc2hvbGQgKSB7CiAgICAgICAgICAgICAgICAgICAgc3RkOjpjb3V0IDw8IGNvbG9yc1sgaW50KCBzdGQ6OmxvZyggaSApICkgXTsKICAgICAgICAgICAgICAgICAgICBnb3RvIGVzY2FwZWQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICckJzsKICAgICAgICBlc2NhcGVkOjsKICAgICAgICB9CiAgICAgICAgc3RkOjpjb3V0IDw8ICdcbic7CiAgICB9Cn0=