import Data. List
import Data. Function
( predmeti
',birki' ) = unzip $ head $ soljushen sgruppirovaniePredmeti birki
sgruppirovaniePredmeti
= groupBy
( ( == ) `on` sort
) $ sortBy
( compare `on` sort
) $ words predmeti
soljushen _ [ ] = [ [ ] ]
soljushen gruppi birki = [ ( birka, predmet) :solushn |
( levo
, ( predmet:gruppa
) :pravo
) <- zip ( inits gruppi
) ( tails gruppi
) , sort predmet == sort birka,
solushn <- soljushen ( levo++ gruppa:pravo) ( birki\\birka) ]
aW1wb3J0IERhdGEuTGlzdAppbXBvcnQgRGF0YS5GdW5jdGlvbgoKbWFpbiA9IGZtYXAgbGluZXMgZ2V0Q29udGVudHMgPj49IFxbcHJlZG1ldGksYmlya2ldIC0+IGxldAoJKHByZWRtZXRpJyxiaXJraScpID0gdW56aXAgJCBoZWFkICQgc29sanVzaGVuIHNncnVwcGlyb3ZhbmllUHJlZG1ldGkgYmlya2kKCXNncnVwcGlyb3ZhbmllUHJlZG1ldGkgPSBncm91cEJ5ICgoPT0pIGBvbmAgc29ydCkgJCBzb3J0QnkgKGNvbXBhcmUgYG9uYCBzb3J0KSAkIHdvcmRzIHByZWRtZXRpCglpbiBtYXBNXyAocHV0U3RyTG4gLiB1bndvcmRzKSBbcHJlZG1ldGknLGJpcmtpJ10KCQpzb2xqdXNoZW4gXyBbXSA9IFtbXV0Kc29sanVzaGVuIGdydXBwaSBiaXJraSA9IFsoYmlya2EscHJlZG1ldCk6c29sdXNobiB8IAoJKGxldm8sKHByZWRtZXQ6Z3J1cHBhKTpwcmF2bykgPC0gemlwIChpbml0cyBncnVwcGkpICh0YWlscyBncnVwcGkpLAoJbGV0IGJpcmthID0gemlwV2l0aCBjb25zdCBiaXJraSBwcmVkbWV0LAoJc29ydCBwcmVkbWV0ID09IHNvcnQgYmlya2EsCglzb2x1c2huIDwtIHNvbGp1c2hlbiAobGV2bysrZ3J1cHBhOnByYXZvKSAoYmlya2lcXGJpcmthKV0=
stdin
YWJhYiBhYmFiIGFiYWIgYWJhYiBhYmFiIGFiYWIgYWJhYiBhYmFiIGFiYWIgYWJhYiBhYmFiIGFiYWIgYWJhYiBhYmFiIGFiIGFiIGFiIGFiIGFiIGFiIGFiIGFiIGFiIGFiIGFiIGFiIGFiIGFiIGFiIGFiIGFiIGFiIGFiIGFiIGFiIGFiIGFiIGFiIGFiIGFiIGFiIGFiCmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWFiYmFhYmJhYWJiYWFiYmFhYmJhYWJiYWFiYmFhYmJhYWJiYWFiYmFhYmJhYWJiYWFiYmFhYmIK
abab abab abab abab abab abab abab abab abab abab abab abab abab abab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab
ababababababababababababababababababababababababababababaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabbaabb