<?php
// Simulate the input
$argv[1] = <<<HEREDOC
{
"name" : "Eddard",
"house" : "Stark",
"birth" : 263,
"death" : 299,
"sex" : "male",
"heirs" : [
{
"name" : "Robb",
"house" : "Stark",
"birth" : 283,
"death" : 300,
"sex" : "male",
"heirs" : []
},
{
"name" : "Jon",
"house" : "Snow",
"birth" : 284,
"death" : 384,
"sex" : "male",
"heirs" : []
},
{
"name" : "Sansa",
"house" : "Stark",
"birth" : 286,
"death" : 320,
"sex" : "female",
"heirs" : []
},
{
"name" : "Arya",
"house" : "Stark",
"birth" : 289,
"death" : 350,
"sex" : "female",
"heirs" : []
},
{
"name" : "Brann",
"house" : "Stark",
"birth" : 290,
"death" : 315,
"sex" : "male",
"heirs" : []
},
{
"name" : "Rickon",
"house" : "Stark",
"birth" : 295,
"death" : 319,
"sex" : "male",
"heirs" : []
}
]
}
HEREDOC;
$k=json_decode($argv[1]);$s=[];$f='array_shift';$r='heirs';$e='death';$y='year';function s
($k,&$e){uasort($e,function($a,$b)use($k){$c=$a->{$h='house'};$d=$b->$h;$e=$k->$h;if($c==$e &&$d!=$e)return-1;elseif($c!=$e&&$d==$e)return 1;elseif($a->sex<$b->sex)return 1;elseif($a
->sex>$b->sex)return -1;else return$a->birth-$b->birth;});}function d(&$e,$y){foreach($e
as$i=>$h)if($h->death<=$y)unset($e[$i]);};($x=(array)$k)&&$k->$y=$k->birth;$l=[];while($x) {$l[]=$k;$z=$k->$e;s($k,$k->$r);d($k->$r,$k->$e);if($k->$r){$s=$k->$r;$k=$f($s);}else{s($k
,$s);d($s,$k->$e);$k=$f($s);}if(!$k)break;$k->$y=$z;}foreach($l as$k)
echo"{$k->$y}-{$k->$e}: $k->name, ";echo"LINE EXTINCT";
PD9waHAKLy8gU2ltdWxhdGUgdGhlIGlucHV0CiRhcmd2WzFdID0gPDw8SEVSRURPQwp7CiAgICAgICAgIm5hbWUiIDogIkVkZGFyZCIsCiAgICAgICAgImhvdXNlIiA6ICJTdGFyayIsCiAgICAgICAgImJpcnRoIiA6IDI2MywKICAgICAgICAiZGVhdGgiIDogMjk5LAogICAgICAgICJzZXgiIDogIm1hbGUiLAogICAgICAgICJoZWlycyIgOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiIDogIlJvYmIiLAogICAgICAgICAgICAiaG91c2UiIDogIlN0YXJrIiwKICAgICAgICAgICAgImJpcnRoIiA6IDI4MywKICAgICAgICAgICAgImRlYXRoIiA6IDMwMCwKICAgICAgICAgICAgInNleCIgOiAibWFsZSIsCiAgICAgICAgICAgICJoZWlycyIgOiBbXQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSIgOiAiSm9uIiwKICAgICAgICAgICAgICJob3VzZSIgOiAiU25vdyIsCiAgICAgICAgICAgICAiYmlydGgiIDogMjg0LAogICAgICAgICAgICAgImRlYXRoIiA6IDM4NCwKICAgICAgICAgICAgICJzZXgiIDogIm1hbGUiLAogICAgICAgICAgICAgImhlaXJzIiA6IFtdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICJuYW1lIiA6ICJTYW5zYSIsCiAgICAgICAgICAgICAiaG91c2UiIDogIlN0YXJrIiwKICAgICAgICAgICAgICJiaXJ0aCIgOiAyODYsCiAgICAgICAgICAgICAiZGVhdGgiIDogMzIwLAogICAgICAgICAgICAgInNleCIgOiAiZmVtYWxlIiwKICAgICAgICAgICAgICJoZWlycyIgOiBbXQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSIgOiAiQXJ5YSIsCiAgICAgICAgICAgICAiaG91c2UiIDogIlN0YXJrIiwKICAgICAgICAgICAgICJiaXJ0aCIgOiAyODksCiAgICAgICAgICAgICAiZGVhdGgiIDogMzUwLAogICAgICAgICAgICAgInNleCIgOiAiZmVtYWxlIiwKICAgICAgICAgICAgICJoZWlycyIgOiBbXQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiIDogIkJyYW5uIiwKICAgICAgICAgICAgICJob3VzZSIgOiAiU3RhcmsiLAogICAgICAgICAgICAgImJpcnRoIiA6IDI5MCwKICAgICAgICAgICAgICJkZWF0aCIgOiAzMTUsCiAgICAgICAgICAgICAic2V4IiA6ICJtYWxlIiwKICAgICAgICAgICAgICJoZWlycyIgOiBbXQogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSIgOiAiUmlja29uIiwKICAgICAgICAgICAgICJob3VzZSIgOiAiU3RhcmsiLAogICAgICAgICAgICAgImJpcnRoIiA6IDI5NSwKICAgICAgICAgICAgICJkZWF0aCIgOiAzMTksCiAgICAgICAgICAgICAic2V4IiA6ICJtYWxlIiwKICAgICAgICAgICAgICJoZWlycyIgOiBbXQogICAgICAgICAgICB9CgogICAgICAgIF0KICAgIH0KSEVSRURPQzsKCiRrPWpzb25fZGVjb2RlKCRhcmd2WzFdKTskcz1bXTskZj0nYXJyYXlfc2hpZnQnOyRyPSdoZWlycyc7JGU9J2RlYXRoJzskeT0neWVhcic7ZnVuY3Rpb24gcwooJGssJiRlKXt1YXNvcnQoJGUsZnVuY3Rpb24oJGEsJGIpdXNlKCRrKXskYz0kYS0+eyRoPSdob3VzZSd9OyRkPSRiLT4kaDskZT0kay0+JGg7aWYoJGM9PSRlCiYmJGQhPSRlKXJldHVybi0xO2Vsc2VpZigkYyE9JGUmJiRkPT0kZSlyZXR1cm4gMTtlbHNlaWYoJGEtPnNleDwkYi0+c2V4KXJldHVybiAxO2Vsc2VpZigkYQotPnNleD4kYi0+c2V4KXJldHVybiAtMTtlbHNlIHJldHVybiRhLT5iaXJ0aC0kYi0+YmlydGg7fSk7fWZ1bmN0aW9uIGQoJiRlLCR5KXtmb3JlYWNoKCRlIAphcyRpPT4kaClpZigkaC0+ZGVhdGg8PSR5KXVuc2V0KCRlWyRpXSk7fTsoJHg9KGFycmF5KSRrKSYmJGstPiR5PSRrLT5iaXJ0aDskbD1bXTt3aGlsZSgkeCkKeyRsW109JGs7JHo9JGstPiRlO3MoJGssJGstPiRyKTtkKCRrLT4kciwkay0+JGUpO2lmKCRrLT4kcil7JHM9JGstPiRyOyRrPSRmKCRzKTt9ZWxzZXtzKCRrCiwkcyk7ZCgkcywkay0+JGUpOyRrPSRmKCRzKTt9aWYoISRrKWJyZWFrOyRrLT4keT0kejt9Zm9yZWFjaCgkbCBhcyRrKQplY2hvInskay0+JHl9LXskay0+JGV9OiAkay0+bmFtZSwgIjtlY2hvIkxJTkUgRVhUSU5DVCI7