- #include <iostream> 
- #include <string> 
- #include <vector> 
- #include <algorithm> 
-   
-   
- void delete_chars_between(std::string& line, char del) 
- { 
-     std::string::iterator itr_from = std::find(line.begin(), line.end(), del); 
-     // I don't want to pass an iterator to two past the last element 
-     if ( itr_from == line.end() ) 
-     	return;	 
-     std::string::iterator itr_to = std::find(itr_from + 1, line.end(), del); 
-     //                                               ^^^^ 
-   
-     while ( itr_to != line.end() ) 
-     { 
-     	itr_to = line.erase(itr_from + 1, itr_to); 
-   
-     	itr_from = std::find(itr_to + 1, line.end(), del); 
- 		// to start another couple ^^^^ 
-     	if (itr_from == line.end()) 
-         	break; 
-   
-     	itr_to = std::find(itr_from + 1, line.end(), del); 
-     } 
- } 
-   
- int main() { 
- 	std::vector<std::pair<std::string, char>> test{ 
- 		{ "hah haaah hah hello!", 'h' }, 
- 		{ "hah haaah hah hello!", 'r' }, 
- 		{ "hah haaah hah hello!", 'e' }, 
- 		{ "hah haaah hah hello!", 'a' } 
- 	}; 
-   
- 	for ( auto & t : test ) { 
- 		std::cout << "\noriginal: \t" << t.first << "\ndeleting \'" << t.second; 
- 		delete_chars_between(t.first, t.second); 
- 		std::cout << "\': \t" << t.first << '\n'; 
- 	} 
-   
- 	return 0; 
- } 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKCnZvaWQgZGVsZXRlX2NoYXJzX2JldHdlZW4oc3RkOjpzdHJpbmcmIGxpbmUsIGNoYXIgZGVsKQp7CiAgICBzdGQ6OnN0cmluZzo6aXRlcmF0b3IgaXRyX2Zyb20gPSBzdGQ6OmZpbmQobGluZS5iZWdpbigpLCBsaW5lLmVuZCgpLCBkZWwpOwogICAgLy8gSSBkb24ndCB3YW50IHRvIHBhc3MgYW4gaXRlcmF0b3IgdG8gdHdvIHBhc3QgdGhlIGxhc3QgZWxlbWVudAogICAgaWYgKCBpdHJfZnJvbSA9PSBsaW5lLmVuZCgpICkKICAgIAlyZXR1cm47CQogICAgc3RkOjpzdHJpbmc6Oml0ZXJhdG9yIGl0cl90byA9IHN0ZDo6ZmluZChpdHJfZnJvbSArIDEsIGxpbmUuZW5kKCksIGRlbCk7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXgoKICAgIHdoaWxlICggaXRyX3RvICE9IGxpbmUuZW5kKCkgKQogICAgewogICAgCWl0cl90byA9IGxpbmUuZXJhc2UoaXRyX2Zyb20gKyAxLCBpdHJfdG8pOwoKICAgIAlpdHJfZnJvbSA9IHN0ZDo6ZmluZChpdHJfdG8gKyAxLCBsaW5lLmVuZCgpLCBkZWwpOwoJCS8vIHRvIHN0YXJ0IGFub3RoZXIgY291cGxlIF5eXl4KICAgIAlpZiAoaXRyX2Zyb20gPT0gbGluZS5lbmQoKSkKICAgICAgICAJYnJlYWs7CgogICAgCWl0cl90byA9IHN0ZDo6ZmluZChpdHJfZnJvbSArIDEsIGxpbmUuZW5kKCksIGRlbCk7CiAgICB9Cn0KCmludCBtYWluKCkgewoJc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBjaGFyPj4gdGVzdHsKCQl7ICJoYWggaGFhYWggaGFoIGhlbGxvISIsICdoJyB9LAoJCXsgImhhaCBoYWFhaCBoYWggaGVsbG8hIiwgJ3InIH0sCgkJeyAiaGFoIGhhYWFoIGhhaCBoZWxsbyEiLCAnZScgfSwKCQl7ICJoYWggaGFhYWggaGFoIGhlbGxvISIsICdhJyB9Cgl9OwoKCWZvciAoIGF1dG8gJiB0IDogdGVzdCApIHsKCQlzdGQ6OmNvdXQgPDwgIlxub3JpZ2luYWw6IFx0IiA8PCB0LmZpcnN0IDw8ICJcbmRlbGV0aW5nIFwnIiA8PCB0LnNlY29uZDsKCQlkZWxldGVfY2hhcnNfYmV0d2Vlbih0LmZpcnN0LCB0LnNlY29uZCk7CgkJc3RkOjpjb3V0IDw8ICJcJzogXHQiIDw8IHQuZmlyc3QgPDwgJ1xuJzsKCX0KCQoJcmV0dXJuIDA7Cn0=