#include <iostream>
enum COLOR
{
Blue,
Red,
Green,
Purple,
Last,
First=Blue,
};
inline COLOR operator++( COLOR& x ) { return x = (COLOR)(std::underlying_type<COLOR>::type(x) + 1); }
COLOR operator*(COLOR c) {return c;}
COLOR begin(COLOR r) {return First;}
COLOR end(COLOR r) {return Last;}
int main() {
for(auto c : COLOR()) {
std::cout << c << '\n';
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgplbnVtIENPTE9SCnsKICAgIEJsdWUsCiAgICBSZWQsCiAgICBHcmVlbiwKICAgIFB1cnBsZSwKICAgIExhc3QsCiAgICBGaXJzdD1CbHVlLAp9OwoKaW5saW5lIENPTE9SIG9wZXJhdG9yKysoIENPTE9SJiB4ICkgeyByZXR1cm4geCA9IChDT0xPUikoc3RkOjp1bmRlcmx5aW5nX3R5cGU8Q09MT1I+Ojp0eXBlKHgpICsgMSk7IH0KQ09MT1Igb3BlcmF0b3IqKENPTE9SIGMpIHtyZXR1cm4gYzt9IApDT0xPUiBiZWdpbihDT0xPUiByKSB7cmV0dXJuIEZpcnN0O30KQ09MT1IgZW5kKENPTE9SIHIpICAge3JldHVybiBMYXN0O30KCgppbnQgbWFpbigpIHsgCiAgICBmb3IoYXV0byBjIDogQ09MT1IoKSkgewogICAgICAgIHN0ZDo6Y291dCA8PCBjIDw8ICdcbic7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==