KOOPA77MHDMNHAKH7YXUD2POVQCT3R2HHDHEFBW3G7MVM7QJQVYAC
OHAARXLBTFOIV5FOTY7IDMOIAE275CKXCE6XQMWV3EC63YCSMIWAC
XRNTOOZ6ARR4XK7GNGUZKHFKB5NDW3WU4I32QKJH6ADFHZQG55CAC
722HZ7UFINNE3YKSYKP2NHZ5XEG5QQLQHSKC7PREJZR3EX6RDYUAC
RCLGQ2LZMFVPBPTU2G55DJ6HZPOGGTPZRZCY54VGP6YLHANJ2LAQC
BPRNUTY7MHK7LK4EY5MY5OFFG3ABOL7LWXD574L35M74YSQPULFAC
FEMASUBNU32NSG4DNXZX54CGCA57PVRGYO46L3A6F2EJ4BCSJ3SAC
BVR7DVINVPQG7PA6Z7QYVYNQ43YZL7XCC6AOMSMWMGAAB2Q43STAC
if (x.gi < y.gi)
return true;
if (x.gi > y.gi)
return false;
if (x.vi < y.vi)
return true;
if (x.vi > y.vi)
return false;
if (x.tl < y.tl)
return true;
if (x.tl > y.tl)
return false;
return x.valid < y.valid;
return make_tuple(x.gi, x.vi, x.tl, x.valid) <
make_tuple(y.gi, y.vi, y.tl, y.valid);