Brainfuck ASCII art message concealer

Top | Options | BF Output | Image output | Bottom

When I discovered Brainfuck yesterday afternoon, I immediately fell in love with it's subtle blend of simplicity and fiendishness. It's a veritable challenge to get Brainfuck to do anything useful, but it occured to me that it might be very good at hiding text in ascii art... What follows is my first attempt at a tool which encodes text in Brainfuck and then hides it in an ASCII art image.

A big nod to Jonathan Ford for his ASCII art generator class, which I used as a base for the second half of this app. When I get around to it, I'll pack this all up for download as the class I wrote (bf_text.class.php) contains some functions which may be of use to someone.

Just stick in some text, optionally specify the url of an image, then hit 'Go!. Activating debug mode shows the original letters (but maintains BF safety) as well as some information about how it's doing it. When the debug function encounters a BF operator in your input it replaces it with an asterix, but the output will be for the original character.


Top | Options | BF Output | Image output | Bottom

Options:


Your Brainfuck sir...

Top | Options | BF Output | Image output | Bottom


View the plaintext BF.


Your ASCII image sir...

Top | Options | BF Output | Image output | Bottom

[-]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>;;;;;;;;[-]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<>;;;;;;;;;;;;;;;+++;;;;;;;;;;;;++++++[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;;;;;////;;;;;;;;;;;;;;/////;/;;+++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>;;;;/;;;;////;;;/;;;;;;;;;;;////;;;;;;;;-]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@</;;;;//;;;;;//;;;;//;;;;;;;;;;;/;;;;///;;;;;;;++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.>;;////;;;;;;;;;;;;;///;//;;;;/;;;;;;;/////;;;;;;;+++++[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;;////;;;;/;;;;;;;;///////;;;;;++;;;//////////;;;;;+++>;;-]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;;;;;;;;;;;;;;;;;;;;;;;////;;;---.>//`///;;;;//;;;;++;;;;;;[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@</////////;;;;;;;///;///////;;;;;;;++>;;`///;;;;;;;;;;;;;;;;;;;;;;;-]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;++@@.///////;;;//;;;;///////////;;;;;;;;-;;///;;;;;;;;;;;;;;;-;;;;;;;;;;;-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.>;;;;;+++;;////;;;;;//;;;////////;;//;/;////;;+;;;;;;///////;;;;;+;;;;;;;;;;;;;+;;;;;;+++[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;///;;;--;;;;/;///;;;/;;;;;////;;;/////////////;-;;;;;////////////;;;;;//////;;;;;;;;;;;;------@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>//////;;;;;;;;;;;/;;///;;;;/////////////;///////;-]<;;;;;////////////;;;;////////;;;;;;;;;;;;-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.>;;///;;///;;///;;;;///;;;/////////////;;;//////;;;;;;;;;/////////////;;;;;/;/////;;;;;;;;;;;;;;+++++++++[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;;;;/;;;;;////;;;;///;;;/////////////;;;////////;;;;;;;;//////////;;;///;;;;/////;;;;;;;;;;/;;;;+++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>;;;;;;;;;;;;;;/////;;;////;;;/////////////;;;;;;;;;;;;;;;;;;;//////////////////;;//;///;;;;;;;;;//;;;;-]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;;;//;;;;/;/;///////////;;//////////////;;;;;//////;;;;;;;;;///////////////////;;;//;/;;//;;;;;//;;;;+++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.>;;//;;////;;//;;/;//////////;;//////////////;;;;////////;;///;;;;//`/////////////////;;;;;/;////;;;;;;;;;;++++[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;///;;;///;;;/;;;;/;/////////;;/////////////;;;;;////////;/////;;;;;/``/////////``/////;;;;;;;;;/;;;;;;///;;;;----@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>;;;;;;;;;;/////;;;;;;;;;////////;;//////////////;;;;;////////;//////;;;;;//////////////////;;;;;;;;;;;;;;;;;;///;;;;;-]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;;;;;;;///////;;;;;;;;;///////;;/////////////;;;;;;////////;///////;;;;;/;;;;/////////////;;;;;;;+.>;;;/;;;;;///;;;;;++++[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;/;;;;////////;;;;;;;;;;//////;;/////////////;;;;;/////////////////;;;;;;;;;;;;;////////////;;;;;;;;;;;////;;;;//;;;/;;;++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>;;;;;/;///////////;;////;;;;;/////;/////////////;;;;;/////////////////;;;;;;;;;;;///////////////;;;;;;/;;-;;////;;;;;//;;///;]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;/;;////////////;;/////;;;;/////;;////////////;;;///////`///////////;;;+;;;;;;//////////////////;;;;//;;;;;;;////;;;;/;;;;/;;++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.;;///;;///////////;///////;;////;;;;///////////;;;/////////`//////////;;;--;;;//;//////////////////-;;///;;;;;;////;;;;;;;;;;;;;;-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.>;////;;//////////;////////;;/////;;;///////////;;;/////////`///////////;;+++;//////////////////////;;;////;;+;;;/////;;;;;;;;;;;;;+++++[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;/////;;////////;/////////;;/////;;;/////////;;;;//////////;///////////;;--;;////////////`//`///////;;/////;;;/;;;/////;;;;;;;;;;;;-------@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>/;///////;;/////////////////;;//////;;/////////;;;;///////////////////////;-;;;////////////`//////////;;;////;;////;//////;;;;;;;;;;;;;]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@</////////;;;////////////////;;//////;;/////////;;;;////////////////////////;;;;////////////////////////;;/////;////;;;;;;;;;;;;//;;;;;;;---@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.>////////;;;;///////////////;;//////;;/////////;+;;;///////////////////////;;;;///////////////;////////;;//////////;;;;/;;;;;;;///;;;;;;;+++++++[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;++;;;;///////;;;///////////////;;//////;;////////;;;/;;///////////////////////;+;;///////////;;;;;;;;/////;;/`////////;;;////;;;;;////;;;;;;;;;;+++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>;;;;;-;;;;;;;;////;;;;//////////////;;///;//;/////////;;////;///////////////////////;;;/////////;;;;]@@<;;;////;;;///`/////;;;/////;;;;////;;;;///;;;;;++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.;;;;;;-////;/;/;/;/;;;;////////////`/;;//////;/////////;/////;;//////////////////////;;;////////;;;;-;;;///////;-.>//////;/;;;;//////;;;;///;;;;;////;;;;;++++[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;;;;;;//////////////;;;////////////;;;//////;/////`//////////;//////////////////////;;;////////;;;;;;;;//////;;+;;;/////;/;;;///////;;;;;/;;;;;;/////;;;;;+++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>;;;;/;;;;;/;////////////;/;;//////////////;;////;/////`//////////;//////////////////////;;;////////;;-;;;///////;;;;;;;////;;;;;;///////;;;;;;;;;;;;;;///;;;;;;]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;;///;;;;;////////////////;;;;//////////////////////////////////;;//////////////////////;;////////--;;;;//////;;;;;;;;;;;;;;;;;;///////;;;;//;;;;;;;;;;;;;///;;-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.>;;;//////;;;;;/;;///;;////////;;;;//////////////////////////////////;//`////////////////////;////////+;;;;;/////;;;///////;;;;;;;;;///////;;;;///////;;;;;;;;;;/;;;+++[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<;;;;////;;/;;;;;;;;///;;;////////////;;;///////////;//`///////`/`//////;/////////;;///////////;////////;;;;;;/////;;;;//////;;;;;;;;////////;;;;//////////;;;;;;;;;/;;----@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>//;;/////;/////;;;;/;;;;;////////////`///;;////;;;//;////////////``///////////////;;///////////;////////;;;;;;//////;;////////;;;;;;;////////;;;;//////////;;;;;;;;;;;;;;-]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<//;;/////;;/////;/////;//;///////////////////;//;////;////////////``///////////////;;////////////////////;;;;;;//////;;;//////;;;/;;;;////////;;;;///////////;;;;;;;;/;;;;;;+++@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.>;;;;//////;//////////////////////////////////////;/`//;//////////////`/////////////;;;///////////////////;;;;;;;///////;;/////;;;;;/;;/////////;;;;//////////////;;;;;;/;;;;;;+++++++[@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@</;;;;;/////;///////////////;///////`///////////////`//;;;//////////////`/////////////-;;///////////////////;;;;;;////////;;//////;;;/////////////;;;;//////////////;;;;;;;;;;;;;;------@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@>;;;;//;////;////////////////;;;////////////////////`/////;//////////////`/`////`///;/;-]<///////////////////;;;;;;////////;;///////;;;;////////////;;;///////////////;;;;;;//;;;;;;------@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@...;///;;;;;;/;/////////////;;;;;;/////;////////////`/////;/////////;;;/////////////@;@;;///////////////////;;;;;;/////////;;///////;;;;;////`//////;;;///////;;;;;////;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@;/;;////;;;;;;;;;/////////;;;//;;;;;;;;;;//////////////////;/``////////////`/////////@;;;;//////////////////;@;;;;;//////`//;;////////;;;;;//////////;;;///;;;////;;;///;;;;;;;;/;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@//;////;///;;;;;;;///////;;;//////;;;;;;;;/////////////////;///////////////`//`/////;@;;;//////////////////;;;;;;;;//////`//;;//////////;;;;/////////;;;;;;;////////;;//;;;//;;;;/;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@//;////;;;;;;;;;;;;;/////;;///;//////////;;///////////`////`;///////////////`////////;;;;//////////////////;;@;;;;;//////////;////////////;;;;;;;////;;;;;;;//////////;;;;;;///;;///;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@;/;///;;/;//;;;;;;;;;/////;//////////////////;//////////////////``////////////;;/////;@;;;////////////////;;;@@@;;;//////////;;///////////////;;;;;;/;;;;;;;;////////;;;;;;;;;//;;;;//;;;;;;@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@/;//////////;;;;;;/;;;///;/////////////////////;;///////`//`/;//````//////////;////;@@@@;;//////////////;;;;;;;;;@;;/////////;;////////////////;;;;;;;;;;;@;/////////;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@;;/////////;;;;;////;;;/////////////////////////;;;;;//////`////````/////////////;;;;@@@@;////////////;;;;;;;;;;;;//////////;;;//////////////////;;;;;;/;@;;/////////;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@;///////////;;;/////;;;//////////////////////`///;;///;//;//////```/`/////`/////;;;;;;;@@;///////;;;;;@@;;;;;;;;////////////;;;//////////////////;;;;;;;;;;;/////////;;;;;;///;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@;////;///////;;;///////;;;////////////////////``//;/////;/////;//```///////`///;;;;;;///;@;;///;;;;;;;;@@@@;;@;//////////////;;////////////////////;;;;;@;@;;/////////////;;/////;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@;;///;;;//////;;////////;;;////////////////////`///////////////;//````//////`//;;;////////;@;;;;;;;;;;;;;;@@@;///////////`///;;/////////////////;////;;;;@;;;;///////;//////;;/////;;;;;/;/;;;;;;;@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@;///;/;;//////;;/////////;;////////////////////`///////////////////``////////`/////////`//;;;;;;;;;;;;;;;;;;;//////////```///;;////`///;;/////////////;;;@@@;////////////////;//////;;;;/;;;;;;;;;;@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@;;/;;;;;;//////;;/////////;;//////////`////////``///////////////////`/`///////////////////;;;;;;;;;;;;;;;;;/////////////``////;;///``//////////////////;;@@@@;////////////////////////;;//;;;;;;;;;;;@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@;;;;;/;/;//////;;//////////;////////`/`////////``////////`///////////`//////////////``//;;;/////;;;;;;;;////////////////``///;;////////;;//////////////;;@@@;///////;/////////////;;;;;;/;;;;;;;;;;/;;@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@;;;/;;//;//////;;///////////////////```////////`///////////////////;///`////////```////;//////////;;;;;;////////////////////;;/////////;///////////;//;;;@@;;///////;//////////;/;;;;;;/;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@;;;;;///;//////;;//////////;///````////////////`/////////`/////////;;;////``///``///;///////////////;;;;;/////////////`/////;//////////;/////`////;;;;;;@@;;////////;//////////;;;;;;;;;;;;;;;;;;;;;/;;@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@;///;///;//////;;//////////////```//;/////////``//////////`/////////;;;;//////////;///////////////////;;;//////////////////;;//////////;/////////;;;;;;;@;;/////`///;//////;;;;;;;;;;;;;;;;;;;;;;;;//;;@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@;/;//;///;;/////;///////////////`/////////`////``//////////`/`//////////;;;;/////;//////////////////////;;;////////////////;;///////////;////``///;;;;;;@@;/////////;/;/////;;;;;;;;;;;;;;;;;;;;;;;;;//;;@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@;;///;///;;/////////////`///////////////////;;//////////////`/////////////;;;;@;/////////////////////////@;;//////////////;;/////////`//;////`////;;;;;;@;;//////`///////////;;;;;;;;/;/;/;;;;;;;;;;;/;;;@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@;;;;///////;/////////////`//////////////`//////;;;////////////```///////////////;/////////////////////////;;;;////////////@;//////////////////////;;;;;;;;;;///////////////////;;;;;;///////;;;;;/;;;;;;;;@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@;/;;;;/////;;///////////``/////////////`/////;//;;;;//////`//////////////``/////;/``////////////////////`//;;;///////////;;;/////`/////`//////////;;;;;;@@;;;///////////////////;;;;;///////;;;;;;/;;;/;;;;;@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@////;;//////;//////////////;;;;//////////////////;;;;;/////`/////``///////```///;/`/////////////`/////`//`//@@;//////////;;//////``//////////////;;;;;;;;;@;;//////////`/////////;;;;////////;;;;;/;;;;;;;;;;@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@/////;///////;////////////;;;;;////````//////////;/;;;;//////`//`//////////````;//`/////`/////;//`//////////;@@///////`//@;/`////////////////`///;;;;;////;;;;/////;/////////////;;;;////////;;;;;/;;;;;;;;;;@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@/////;;//////;;;;;///;;/;;;;;;;;////`////////////////;;;//////`//////////;//``/@//`//////;///;///////////////@@;/////////;;/`/////////////`//////;;;///////;;;///;;;/////////////;;;;;//////;;;//;;;;;;;;;;;;@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@/////;;///////;;;;;;;;///;/////;;;////////////////////;;//////`````////////;/`;;///`////;;;;;////////////`///;@@;////////;;/`////////////////////;;/////////;;;;;;@;;///////;;;;;;;;;;//////;;;///;;;;;;;;;;;@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@;//////;/////;;;////;////;//////////;;;////////////////;;////////````/`/////;;///;//////;;;;;//////////////////@@;/////////;//////////////////////;;//////////;;;;;;@;;;;;;;;;;;;;;;;;;;////;;;/////;;;;;;;;;;@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@///////;;;;///;/////;////////////////;/////////////////;/////////`/``/////////////////;/@@@;///////////////////;@@;///////////////////////////////;////////////;;;;;;@@;;;;;;;;;;;;;;;;;///;;;///////;/;;;;;;@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@////////;;;;/;/////////`;/////////`//;//////////////`////////////``/``//////////////////@@;///////////////////;;@@@;//`///``/////////;////////////;///`/////////;;;;;@@@@@;;;;/////////;;;/;;/////;;;;;;//;;;@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@////////;/;;;;//////////;/////////`/;/////////////`/``//;/`///////```//`//`//////```////;@////////////////;/;//;@@@;;///////////////;;;//////////;;//////;;/////;;;;;;//;;/////////////;;;;;;//////;;;;;;/;;;@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@;//////;;//;;;///////;;;;;////////`/;///////////////``//;/////////`////``/`/////``//////;;///``/////`//;;///////;@@@;;//////////////;;;;/////////;;//////;;///`//;;/;;@;;////////////////;;;;/////////;;;;;/;;@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@;////;;//////;///////;;;/////////`/;////////////////```/;//`////////``/``///////`////`/////````////////;////////;;@@@;;;;;;////////;;;;;;////////;////`//;;//////;;;;;@;///////////////;/;;;;//////////;;;;/;;;@@@@@@@@@@
@@@@@@@@@@@@@@@@@@;////;;//////////;////;////////////;////////`/////`//`//;//`////////`////`/////////////////````///////////////////;;////;;;;;;;///;;;;;;////////;;///////;;///////;;;;;///////////////////;;;///////////;;;;;;;@@@@@@@@@@
@@@@@@@@@@@@@@@@@@;////;//`/////;;;;//////////////`/;;/////////`////```///////`///`//////`/``/////////////////``//////`/////////////////////;;;;;;;;;;;///////////;;///////;;;//////@;;;;///////////////;;//;;;//////////;;;;;;;;;@@@@@@@@@
@@@@@@@@@@@@@@@@@@@////;////;;;;;;;;//////////////`/;//////////`////```////;//``//////;///////////////////////```///////`/////////////////////@@@@;;;//;//`//////;;////////;;;/////;;///////////////////;;///;;;///;;;;;;;;;;;;;;;@@@@@@@@@
@@@@@@@@@@@@@@@@@@@////;////;;///////////////////`/;;//////////`/////``////;;//`/////////////`///////////////`////////////////////////`///////;@@;;;////;;//////;;;////////;;//////;;///////`//////////;;;////;;//;;;;;;;;;;;;;;;;;@@@@@@@@
@@@@@@@@@@@@@@@@@@@;///;////////////////`//////////;;///////////////`////////;//`/////;///////;;/////////////`/////////////////`//////``///////@@;;;;/////;;;/;;;@;////////;;/////;;//////////`/`//////;;;/////;/;;;;;;;;;;;;;;;;;;@@@@@@@@
@@@@@@@@@@@@@@@@@@@@///;/////////////////////////////////////////////````/////;////////////;;///////////////``/////////////////////////////////;;@;;;//////;;;;;@@;////////;;////////////////``////////;;;//////;;;;;;;/;;;;;;;;;;;@@@@@@@@
@@@@@@@@@@@@@@@@@@@@;/;/;//////////////////////////;;;////////`/`/////``/////;;//////////////;//`////////;///``////////////////`////////////////;;;;;;////////;;;;;/////////;////////////////`/////////;;;//////;;;;;;//;;;;;/;;;;;@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@;///;;;///;/////////`;;;;//////////////////``////``/////;;///////;//`//;/`/`///////;;///////////////////`/////////``///////////;;;//`/////;;;;/////////;//////////////////////////;;///////;;;;;///;;;;;;/;;;;@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@;////;;///;;///////;;;;;/////////;////////`//////``/////;/;//;//;/////;///`///////`//`/////////////////`///////////////////////;;;/////`///;;/////////;////////////////////;;///;;;////////;;;/////;;;;;//;;;@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@;////////;;;;;;;;;;;/////;///////;////////////////////;/;;;/;;;;////////`//`/////////`/`/////////////`/////////////////////////;;////////;;////////;;/////////`/////////;;;///;;/////////;;;;;;;;;;;;////;;;@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@;//////;;;;;;;;;/////`//////////;///////////```//////;;;;;;;///////////`//////////```/////////////////////////////////////////;;///////;;////////;;///;//////////////;;;;///;;///`/////;;///////;;;;////;;@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;//;/;/;;;;///////`//`/////`/////////`////`///////;;;;;////////;;;;/`/////;///```/////////////////////////;/////////`//////;;////////;////////;///;;//////////////;;;////;;////////;;/////////;;;;////;;@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;/;//////////////`////////``//;/////``///`//////;;;;//////////////;/////////```/////////////////////////;//////////////////;;////////////////;///;;////////////;;;;/////;;///////;;///////////;;;;;//;;@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/;;//////////////////;/////`//;;/////`//``//`////;;///````////////////;//////////;;;;;;//////////////;;;///////////////////;;////////////////;///;/////////////;////////;////////;///////////;;;;;;;;;;;@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;//////////////////`//////``/;;///////////``///;;;//````//////////////////////////////////////////;;;//``/////////////////;;;/////;;///////;;//;//////////////////////////`//;//////////////;;;;;;;;;;;@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//////////////////////////`/;;;////////////////;///`/`//////////////////////////////////////`//////;;////////////////////;;;;;//;;;///////;;///////////////;////////////////;//////////////;;;;;;;;/;;@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/////////////////////////`//;;;//////////////;;//````/``///////`//////////////////////////`///////;/;;////////////////////;;;;;;;;//////;;//////////////;;//////////////`/;///////////////;;;;;;;;/;;@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;///////////;;;/////////`//;;;;;;;/;;;/////;;//````//`///////////////////////////////////////////////;;;/////////////////;;/;;@;;////;;;/`///////////;;/////////////////;///////////`/////;/;/;;;;;@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;//////;;;///////////`//////;;;;/;;//////;//````/`//`///////////////////////////////////``/////////;;;;;;;;;////////////;;@@;;;;;;;;;////////////////////////////////////////////////////;;;;;;;@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;//;;;////////////////;//////////////;//``//``//`///////////////////;////////////////////////////;;;;;;//////////////;;@@;;;;;;;;////////////;;;///////////////;///`////;;//////`/////;;;;/;@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;//////////////`///////////////;;//```//`///`/////////////////;;//////////////////////`//////;;;;;///////////////;;@@;;;@@;;///////////;;;//////////////////////////;;;/////////;;;;;;;@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;///////////`///////;///////;///``````///////////;/////;//;////////`///////////////`/``////;;;;/////////////////;@@@@@@;;;/////////;;;;///////////////////`////////;;////////;;;;;;;@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;////////////////;;;;//////////```///////////////;;/;;;////////`/////////////////////`/////;;;;/////////////////;@@@@@;;;///////;;///;;////////////////////////////;//`////;;;;;/;;@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;;;;@;//////////////;;/////////////```///////////////;;/;////////////`//////////////////////////;;;;////////////////;;@@@@;/;/////////////;/////////////////`//////////////////;;;;;;;;@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//////;;;;;;;;;;;;;;;;/////////////;/////////////```////////////////;/////////////`///////////`////////////////;;;;////////////////;@@@@@;//////////////;/;////////////////////////////////////;;;;;;@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;///////;;;;;;;;;;;;;;;;;/////////////////////```//`/////////////////`/////////////////////;;////////////////////;;;;;//////////////;@@@@@@;/////`////////;////;;/;/////////////////////////////;/;;/;@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;///////////;;;;;;;;;;;;;;;;;;;;;/////////////`///////////////////////////////`////////////////////////////`//////;;;;;;////////////;;;@@@@;///////////////;//;/;;//////////////////////////////;/;;;;@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/////////;;;;;;;;;;;;;;;;;;;;/////////////////````//////////////////////////`//////////////////////////////////////;;;;;;;/////////;;/;;@@@;;/////////////////;;;;//////////////////;///////;//;;/;;;;@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@////////;;;//;;;;;;;;;;;;;;;;;;///////////////```//////////////////```/////`////////////;///////////////////////////;@;;;;;;////;;;;////@@;;;////////////////;;////////////////;;///////;;;;;;;;;;;;;;@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@//////////;///;;;;;;;;;;;;;;;;@;///////////////``//////////////////``//////`///////////;//////////////////////////////;;;;;////;;;//////;@;;;////////////////;////////////////;;//////////;;;;;;;;;;;;@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@///////////////;;;;;;;;;;;;;;;;@;//////////////////////////`/``/``//`/////////////////;///`/////////////////////////////;;/;;;;/;///////;@;;;;///////////;;;//////////////////;///////////;;;;;;;;;;;;@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@////;////////////;///;;;;;;;;;@@@@///////////////////////`/`````///////////////////////////////////////;;/////////////////;;;;;////``///;@;;;;;;;//////////////////////////////////////////;;;;;;;;;;@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@////;/////////////;///;;;;;;;;;;;@@;///////////////;///`/////////////////////////////////////////////;;////////////////////;;;;////``///;;;;;;;/////////////////////////////////////////////;;;;;;;;;@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@///;/////;;//////;;/;;;;;;;;;;;;;@@@;/;///////////;;/////////////////////////////////////////////////;;/////////////////////;;;//////////@;;;;;;////////////////////////////////////////////;;;;;;;;@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/;;;//////;;/////////;;;@@;;;;;;;;@@@;///////////;//////////////////////////////////////////////////;;/`/////////////////////;;//////////;;;;;;;;///////////////////////////////////;///////;;;/;;;;@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;/;;/;;///////////////;;;;;;;;;;;;;;@//;///////////`///////////////////////////////////////////////;;////////////////////////;;/////////;;;;;;;;;;/////////////////////////////////;//////;;;//;;;;@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;/;/;;;/////////////////;;;;;;;;;;;;;;//;//////`///////////////////////////////////////////////////;/////////////////////////;;;///``////;;;;;;///;;;////////////////////////////;/;/;;;;;;;/;;;;;@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;///;;//////////`//`/////;;;;;;;;;;;;;;@;//////////////////////////////////`/////////////////////////`///////////////////////;;;/////////;;;;;;;/////;;;;////////////////////////;;;;;;;;;;;;;;;;@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;////;////////;;////`///`/;;;;;;;;;;;;;;@@///////////////////////////;//////////////////////////////`////////////////////////////`///////;;@;;;;/////;///////////////////////////;;;;;;;;;/;;;;;;@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;////;////////////////`/``//;////;;;;;;;;;;/////////////////////////;///////////////////////////////`/////////////////////;///;/////`////;;@;;;;;//;;////////////////////////////;;;;;;///;;;;;;@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;//////////////``//`//```/////////;;;;;;;;@;/////;////////;;//////;;/////////////////////;////;;////////////////////////////;;///////////;@@;;;;;;;/;//////////////////////////;;;/////;/;;;;;;@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;////////////////`//`////////////;/;//;;;/;;@;//////;/////////////////////////////////////;;/;;;////////////////////;;;;;///;;////////////;@@@;;;;;;//////////////////////////;;;/////;;/;;;;;;@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@///////////////////`/`/////////////;;;;;;;;;;@;/////////////////////////////;;;;/////////;;;//;///////////////////;/;/;;////;;///////////;/@;@;;;;///////////////////////;/;;;;////;;;/;;;;;;@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@///////////////`/``//`//`/////////////;;;;;;;;@;/;;;////////;/////////////////////////;;;////`/;;//////////////;///////////;/;/////////////;;;;;;;/////////////////////;;;;;;////;;;;;;;;;;;;@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//////////////``/`////``///////////////;;;;;;;;;/;;///////;////////////////`////////////////`///;;///////;;;//////////////;/////////////;//;;;;;;////////////////;;;;;;;;//////;;;;;;;;;;;;;@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@//////////////`/``//``/```///////////////;;;;;;;;;///////;;;/////`//////////////////////;//`//////;;;;;;;;;///////////////;;;///////////////;;;;;;//////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/////////////////`/``///``////```////////;;;;;;;;;//;;;;;;;;////////////////////////////////////////;;;;/////////////////;;;/////////;;/////;;;;;/////////////;;;;;;;;;;;;;;;;;;;;;;;;/;;;@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;////////////```//`//``//////```//////////;;;;;;;;;;;/;;;;;;;;///////////////////////////////////////;;;//////////////////;/;///////;;///////;;;;;;;;//////////;;;;;;;;;;;;;;;;;/;;;//;/;;@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//////////////////`/////`//`/`////////////;;;;;;;;;;;;;;;;;;;;;;//////`////////////////;///////////;;;///////////////////;////////;;///////;;;;;;;;;;///////;;;;;;;;;;;;;;;;;;//;;///;/;;@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@//////////////`///```////////````//`///////;;;;;;;;;;;;;;;;;;;;;///////`////////////////;//////////;;////////////////////;////`////;///////;;;;;;;;//;;;;//;;;;;;;;;;;;;;;;;;;;;////;;;;@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@////////////////`````/``/`/;///////`////////;;/;;;;;;;;;;;;;@@;;;;/////////////////////;//////////;;/////////;///////////;/////////////////@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;//;/;;;;;;@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/////////////////``````/`///;//////////////;;;//;;;;;;;;;;;;@@@@;;;///////////////////;;////////;/;//`///////;;;;//////;;/////////////////;;@;;;;;;;;;;;;;;;;;;//;;;////;;;;;;;;;;//;;@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/////////;/////////`/////`/////////`////////;;////;;;;;;;;;;@@@@@;;;;/////////////////;;//////////;//`///////;;;;;;////;;////////////////;;;;;;;;;;;;;;;;;;;;;////;;;;;/;;;;;;;;/////;@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@////////////////////////////``///``///////;/;;;///;;;;;;;;;;;;@@@@@@;;/;///////////////;//////////;;//////////;;;;;;//;;///////////////;;;;;;;;;;;;;;;;;;;;;;;////;;;;;;;;;;;;/////;;@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/////////////////`/```//////``;/`////////;;;;/;;;;;;;;;/;;;;;@@@@@@@@;;;;/////////////;///////////;///////////;;;;;/;;////////////////;;;;;;;;;;;;;;;;;;;;;;;;///;;;;;;////////;;;;@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@//////////////////```/`///////;//////////;;;;;;/;;;;;;//;;;;;;@@@@@@@@;/;/////////////;;//////////;///////////;;;;;;;///////////;/////;;;;;;;;;;;;;;;;;;;;/;;//;/;;;;/////////;;;;@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;///////////////////`/``/`//`////////////;;;;;;/;;;;;;//;;;;;;@@@@@@@@@;;;;////////////;;/`///////;////////////;;;;;;`/////////;;///;;;;;;;;;;;;;;;;;;;;/////////;;;/;/;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/////////////////////////////////////////;;;;;;;;;;;;;/;;;;;;@@@@@@@@@;;///////////////;//////////;////////////;;;///////////;/;;//;;;;;;;;;;;;;;;;;;;;/////////;;;///;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/////////////`/////////;//////////////////;;;;;;;;;@;;;;;;;;;;@@@@;@@@@;;///////;//////;//////////;/////////////;;//////////;//;/;;;;;;@;;;;;;;;;;;;;;;;/////////;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//////////////////;//////`////////`////;;;;;;;;;;;@@;;;;;;;;;;@;;;;;;@@@;//;;;;////////;/////////;//////////////;;;/////;;;;;;;;;;;;;;@@@;;;;;;;;;;;;;;/////////;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;////////////////////`////////////////;;;;/;;;;;;;;;;;;;;;;;;;;;;/;;;;@@;;///;;;///////;////////////////////////;;;;//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;//////////;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;///////////////`///;//`/////////////;;;//;;@@;;;;;;;;;;;;;;;;;;;;;;;;@;;////;;////////;/////////////////////////;;;;;;;;;;;;;;;;;;;@@;;;;;;;;;;;;;;;;;//////////;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/////////////////`/////////////;///;;;;;;;;;;;;;;@;;;;;;;;;;@;;;;;;;;@;;;////;;;;///;/;////////////////////////////////;;/;;;;;;;;;@@@/;;;;;;;;;;;;;;;;/////////;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@///////////////////////////;//;///;;;;;;;;;;;;;;@;;;;;;;;;;;;;;;;;;;;;;;;//////;;;////;///////////;;/////////////////;;;//;;;;;;;;@@@@;/;;;;;@@@@@@@@@@;;;;;;/;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/////////////////////////////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;//;;///;////;///////////;;////////////////;;;///;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@;;;;;/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@////////////////////`//////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;///////;;///////////;///////////////;;;////;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//////////////////`//////////////////////;;;;;;;;;;;;;;;;;;;;/;;;//;;;;;/;;;;;/////;;;/////////////////////////;;;;/////;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@//////`/////////////////////////////;;/;;;;;;;;;;;;;;;;;;;;/;//////;;;@;;///;;/////;;////////////////////////;;///////;;;///;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@///////////////////////////////////;;;//;;;;;;;;;;/;;;;;;;;///////;/@@@/;/;/;;/////;;//////////////////////;;;////;//;;///;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/////////////////////////////////;;//;;;;;;;;;;;;//;;;;;/////////;@@@;//////;////;;///////////////////;;;;/////;;;;/////;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/////////////////////////;/////;;//;;;;;;;;;;;;;;;;;;;//;/////;@@@@@@///////;///;;;/////////////////;;;;////;;;;//////;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/;/////////////////;///;///;;;/;//;;;;;;;;;;;;;/;;;;;;/;;;;;@@@@@@@;/////////;;;;/////////////////;;;/;///;;///////;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/////////;;///;;;;;;;;;;;;;;;///;;/;;;;;@@;;@@;;;;;@@@@@@@@@@@@@@;;///////////;///////////;;;;;;;;;;/;;;;/////;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//////////;;;;;;;;;;;;;;/;;;//;;;;;;;;;@@;;@@@@;@@@@@@@@@@@@@@@;;///////;;;;;;;;////;;;;;;//;;;;;;;;;;;///;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@////;;;;;;;;;;;;;;;;;;//;/////;;;;;@@@@@@@;;@@@;@@@@@@@@@@@@@@@@;;//;/////;;;/;;;;/;;///;;;;;;@;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/////////;;;;;;;;;;/;;;////;/;;;@@@@@@@@@@;@@@;;;;;;@@@@@@@@@@@@;;;/////;;/////;;;;;;;;;;;;;@@@;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/////////;;;;;;;;;;;/////;;/;;;@@@@@@@@@@;@@;/;@@;@@@@@@@@@@@@@@;;;///////////////;;;;;;;;@@@@@@;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;///////////;;;;//;;;;;;;;;//@@;/;@@@@@@@@;;;;@@@@@@@@@@@@@@@@@@@@@;;;;/////////////;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;///////////;;;;;//////;//;///;@;;;;;@@@@@@@;;@@@@@@@@@@@@@@@@@@@@@@@@@@;;;;;;;;;;;;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/////////;/////////;;;;;;;;@@@@@@@@;;;;/;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/////////////////////;;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;//////////`///////////;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@//////////``////////////;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;/////`/`/``/````/////;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;@@@@@@@@@@@@@@///////``/`//`//``////`;;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/@@@@@@@@@@@@;////////////`/`/``/`////;;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;`;@@@@@@@@@;//////////`/``````////;;/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;`//;;@@@;///////////`/`//```////;;;`@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
View the plaintext ASCII.


But what next Tom?

Top | Options | BF Output | Image output | Bottom

Aha, I'd anticipated this... My favourite place to test brainfuck scripts is Cal Henderson's wonderful javascript brainfuck debugger.
And if you want to know more about brainfuck, I enjoyed the following resources:

I hope these are useful. Go forth and Brainfuck!
Or check out my homepage.

















Pssst! If you're interested, feel free to grab the source files: ascii.class.phps & bf_text.class.phps.