import Control.Applicative -- not needed in GHC 7.10
import Data.Monoid -- not needed in GHC 7.10
import Data.List
n j
|let(w
,s
)#p
|let a
?b
=or[q
!b
<GT
|(q
,r
)<-i
,a
==r
,elem q
(h p
)>elem(a
,q
)i
];a
!b
|a
==b
=EQ
|a
?b
||(a
<b
)>b
?a
=LT;
_!_=GT;l
=nub
.sortBy
(!)$h p;m
(v
,s
)q
|h q
==[]=(v
,[q
]:s
)|elem q w
=(v
,[q
++" ..."]:s
)|(w
,x:y
)<-(v
,[])#q
=(w
,(q:
(u
"| "=<<r y
)++u
" "x
):s
)=foldl m
(l
++w
,[])l;c
(p
,q
)=z
$p:q:h q;y
=z
=<<j;i
=iterate(nub
.sort
.(c
=<<))y
!!length j;h
""=[p
|p
<-id=<<j
,and[elem(p
,r
)i
|(r
,q
)<-i
,p
==q
]];h p
=[r
|(q
,r
)<-y
,p
==q
]=unlines=<<r
(snd$mempty#
"")u s
(x:y
)=("+-"++x
):
map(s
++)y
z(x:y)=(,)x<$>y
aW1wb3J0IENvbnRyb2wuQXBwbGljYXRpdmUgLS0gbm90IG5lZWRlZCBpbiBHSEMgNy4xMAppbXBvcnQgRGF0YS5Nb25vaWQgLS0gbm90IG5lZWRlZCBpbiBHSEMgNy4xMAoKaW1wb3J0IERhdGEuTGlzdApyPXJldmVyc2UKbiBqfGxldCh3LHMpI3B8bGV0IGE/Yj1vcltxIWI8R1R8KHEscik8LWksYT09cixlbGVtIHEoaCBwKT5lbGVtKGEscSlpXTthIWJ8YT09Yj1FUXxhP2J8fChhPGIpPmI/YT1MVDtfIV89R1Q7bD1udWIuc29ydEJ5KCEpJGggcDttKHYscylxfGggcT09W109KHYsW3FdOnMpfGVsZW0gcSB3PSh2LFtxKysiIC4uLiJdOnMpfCh3LHg6eSk8LSh2LFtdKSNxPSh3LChxOih1InwgIj08PHIgeSkrK3UiICAieCk6cyk9Zm9sZGwgbShsKyt3LFtdKWw7YyhwLHEpPXokcDpxOmggcTt5PXo9PDxqO2k9aXRlcmF0ZShudWIuc29ydC4oYz08PCkpeSEhbGVuZ3RoIGo7aCIiPVtwfHA8LWlkPTw8aixhbmRbZWxlbShwLHIpaXwocixxKTwtaSxwPT1xXV07aCBwPVtyfChxLHIpPC15LHA9PXFdPXVubGluZXM9PDxyKHNuZCRtZW1wdHkjIiIpCnUgcyh4OnkpPSgiKy0iKyt4KTptYXAocysrKXkKeih4OnkpPSgsKXg8JD55Cm1haW49aW50ZXJhY3Qkbi5tYXAgd29yZHMubGluZXM=