- #include <iostream> 
- #include <string> 
- #include <vector> 
- #include <stdexcept> 
-   
- struct itemInfo 
- { 
-     int quantity; 
-     std::string name; 
-     double price; 
- }; 
-   
- int main() 
- { 
-     std::string line; 
- 	std::vector<itemInfo> items; 
-   
-     while (std::getline(std::cin, line)) 
-     {  
-         try 
-         { 
- 		    itemInfo item; 
-   
-             auto start = line.find_first_not_of(" \t"); 
-             auto stop = line.find_first_of(" \t", start + 1); 
-             item.quantity = std::stoi(line.substr(start, stop - start)); 
-   
-             start = line.find_first_not_of(" \t", stop + 1); 
-             stop = line.find(" at ", start); 
-             item.name = line.substr(start, stop - start); 
-   
-             start = line.find_first_not_of(" \t", stop + 4); 
-             item.price = std::stod(line.substr(start)); 
-   
-             items.push_back(item); 
-         } 
-         catch (const std::logic_error &) { } 
-     } 
-   
-     // use items as needed... 
-   
- 	for(auto &item : items) 
- 	{ 
-     	std::cout << item.name << ": " << item.quantity << " @ " << item.price << std::endl; 
- 	} 
-   
-     return 0; 
- } 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RkZXhjZXB0PgoJCnN0cnVjdCBpdGVtSW5mbwp7CiAgICBpbnQgcXVhbnRpdHk7CiAgICBzdGQ6OnN0cmluZyBuYW1lOwogICAgZG91YmxlIHByaWNlOwp9OwoKaW50IG1haW4oKQp7CiAgICBzdGQ6OnN0cmluZyBsaW5lOwoJc3RkOjp2ZWN0b3I8aXRlbUluZm8+IGl0ZW1zOwoKICAgIHdoaWxlIChzdGQ6OmdldGxpbmUoc3RkOjpjaW4sIGxpbmUpKQogICAgeyAKICAgICAgICB0cnkKICAgICAgICB7CgkJICAgIGl0ZW1JbmZvIGl0ZW07CgogICAgICAgICAgICBhdXRvIHN0YXJ0ID0gbGluZS5maW5kX2ZpcnN0X25vdF9vZigiIFx0Iik7CiAgICAgICAgICAgIGF1dG8gc3RvcCA9IGxpbmUuZmluZF9maXJzdF9vZigiIFx0Iiwgc3RhcnQgKyAxKTsKICAgICAgICAgICAgaXRlbS5xdWFudGl0eSA9IHN0ZDo6c3RvaShsaW5lLnN1YnN0cihzdGFydCwgc3RvcCAtIHN0YXJ0KSk7CgogICAgICAgICAgICBzdGFydCA9IGxpbmUuZmluZF9maXJzdF9ub3Rfb2YoIiBcdCIsIHN0b3AgKyAxKTsKICAgICAgICAgICAgc3RvcCA9IGxpbmUuZmluZCgiIGF0ICIsIHN0YXJ0KTsKICAgICAgICAgICAgaXRlbS5uYW1lID0gbGluZS5zdWJzdHIoc3RhcnQsIHN0b3AgLSBzdGFydCk7CgogICAgICAgICAgICBzdGFydCA9IGxpbmUuZmluZF9maXJzdF9ub3Rfb2YoIiBcdCIsIHN0b3AgKyA0KTsKICAgICAgICAgICAgaXRlbS5wcmljZSA9IHN0ZDo6c3RvZChsaW5lLnN1YnN0cihzdGFydCkpOwoKICAgICAgICAgICAgaXRlbXMucHVzaF9iYWNrKGl0ZW0pOwogICAgICAgIH0KICAgICAgICBjYXRjaCAoY29uc3Qgc3RkOjpsb2dpY19lcnJvciAmKSB7IH0KICAgIH0KCiAgICAvLyB1c2UgaXRlbXMgYXMgbmVlZGVkLi4uCgoJZm9yKGF1dG8gJml0ZW0gOiBpdGVtcykKCXsKICAgIAlzdGQ6OmNvdXQgPDwgaXRlbS5uYW1lIDw8ICI6ICIgPDwgaXRlbS5xdWFudGl0eSA8PCAiIEAgIiA8PCBpdGVtLnByaWNlIDw8IHN0ZDo6ZW5kbDsKCX0KCiAgICByZXR1cm4gMDsKfQ==