input = [1, 3, 2, 0, 5]
find xs = find' ([], []) xs
where find' _ [] = []
find' s@([m], [a,b]) (c:xs)
| c > b = [a,b,c]
| c < m = find' ([c], [a,b]) xs
| c < a = find' ([m], [m,a]) xs
| c < b = find' ([m], [a,c]) xs
find' s@([m], [_]) (c:xs)
| c < m = find' ([c], [c]) xs
| otherwise = find' s xs
find' ([], []) (c:xs) = find' ([c], [c]) xs
main
= print $ find input
aW5wdXQgPSBbMSwgMywgMiwgMCwgNV0KCmZpbmQgeHMgPSBmaW5kJyAoW10sIFtdKSB4cwogICAgd2hlcmUgZmluZCcgXyBbXSA9IFtdCiAgICAgICAgICBmaW5kJyBzQChbbV0sIFthLGJdKSAoYzp4cykKICAgICAgICAgICAgICB8IGMgPiBiID0gW2EsYixjXQogICAgICAgICAgICAgIHwgYyA8IG0gPSBmaW5kJyAoW2NdLCBbYSxiXSkgeHMKICAgICAgICAgICAgICB8IGMgPCBhID0gZmluZCcgKFttXSwgW20sYV0pIHhzCiAgICAgICAgICAgICAgfCBjIDwgYiA9IGZpbmQnIChbbV0sIFthLGNdKSB4cwogICAgICAgICAgICAgIHwgb3RoZXJ3aXNlID0gZmluZCcgcyB4cwogICAgICAgICAgZmluZCcgc0AoW21dLCBbX10pIChjOnhzKQogICAgICAgICAgICAgIHwgYyA8IG0gPSBmaW5kJyAoW2NdLCBbY10pIHhzCiAgICAgICAgICAgICAgfCBvdGhlcndpc2UgPSBmaW5kJyBzIHhzCiAgICAgICAgICBmaW5kJyAoW10sIFtdKSAoYzp4cykgPSBmaW5kJyAoW2NdLCBbY10pIHhzCgptYWluID0gcHJpbnQgJCBmaW5kIGlucHV0