def f(m, n)
cc = []
count_permutations = ->s, w {
if s < 1 || w < 1 || s < w || w * 5 < s
0
elsif s <= 5 && w == 1
1
elsif cc[s] && cc[s][w]
cc[s][w]
else
(cc[s] ||= [])[w] = (1..5).inject(0) {|c, d|
c + count_permutations.(s - d, w - 1)
}
end
}
aux = ->acc, b, s, w {
return acc if s < 1 || w < 1
return acc * 10 + s if w == 1
(1..5).inject(b) {|b, d|
c = count_permutations.(s - d, w - 1)
return aux.(acc * 10 + d, b, s - d, w - 1) if n <= b + c
b + c
} && nil
}
0 < m && 0 < n && (1..m).inject(0) {|b, w|
c = count_permutations.(m, w)
return aux.(0, b, m, w) if n <= b + c
b + c
} && 0 || 0
end
g = ->m, n {puts "(#{m},#{n}) → #{f(m, n)}"}
=begin
g.(-1,1)
g.(1,-1)
g.(-1,-1)
g.(2,1)
g.(2,2)
g.(2,3)
g.(20,1)
g.(20,2)
g.(20,3)
g.(20,400096)
g.(20,400097)
g.(32,1)
g.(32,2)
g.(32,3)
g.(32,1000)
g.(32,1000000)
g.(32,1000000000)
g.(32,1333610936)
g.(32,1333610937)
=end
g.(2000, 1 << 1024)
ZGVmIGYobSwgbikKICBjYyA9IFtdCiAgY291bnRfcGVybXV0YXRpb25zID0gLT5zLCB3IHsKICAgIGlmIHMgPCAxIHx8IHcgPCAxIHx8IHMgPCB3IHx8IHcgKiA1IDwgcwogICAgICAwCiAgICBlbHNpZiBzIDw9IDUgJiYgdyA9PSAxCiAgICAgIDEKICAgIGVsc2lmIGNjW3NdICYmIGNjW3NdW3ddCiAgICAgIGNjW3NdW3ddCiAgICBlbHNlCiAgICAgIChjY1tzXSB8fD0gW10pW3ddID0gKDEuLjUpLmluamVjdCgwKSB7fGMsIGR8CiAgICAgICAgYyArIGNvdW50X3Blcm11dGF0aW9ucy4ocyAtIGQsIHcgLSAxKQogICAgICB9CiAgICBlbmQKICB9CiAgYXV4ID0gLT5hY2MsIGIsIHMsIHcgewogICAgcmV0dXJuIGFjYyBpZiBzIDwgMSB8fCB3IDwgMQogICAgcmV0dXJuIGFjYyAqIDEwICsgcyBpZiB3ID09IDEKICAgICgxLi41KS5pbmplY3QoYikge3xiLCBkfAogICAgICBjID0gY291bnRfcGVybXV0YXRpb25zLihzIC0gZCwgdyAtIDEpCiAgICAgIHJldHVybiBhdXguKGFjYyAqIDEwICsgZCwgYiwgcyAtIGQsIHcgLSAxKSBpZiBuIDw9IGIgKyBjCiAgICAgIGIgKyBjCiAgICB9ICYmIG5pbAogIH0KICAwIDwgbSAmJiAwIDwgbiAmJiAoMS4ubSkuaW5qZWN0KDApIHt8Yiwgd3wKICAgIGMgPSBjb3VudF9wZXJtdXRhdGlvbnMuKG0sIHcpCiAgICByZXR1cm4gYXV4LigwLCBiLCBtLCB3KSBpZiBuIDw9IGIgKyBjCiAgICBiICsgYwogIH0gJiYgMCB8fCAwCmVuZApnID0gLT5tLCBuIHtwdXRzICIoI3ttfSwje259KSDihpIgI3tmKG0sIG4pfSJ9Cj1iZWdpbgpnLigtMSwxKQpnLigxLC0xKQpnLigtMSwtMSkKZy4oMiwxKQpnLigyLDIpCmcuKDIsMykKZy4oMjAsMSkKZy4oMjAsMikKZy4oMjAsMykKZy4oMjAsNDAwMDk2KQpnLigyMCw0MDAwOTcpCmcuKDMyLDEpCmcuKDMyLDIpCmcuKDMyLDMpCmcuKDMyLDEwMDApCmcuKDMyLDEwMDAwMDApCmcuKDMyLDEwMDAwMDAwMDApCmcuKDMyLDEzMzM2MTA5MzYpCmcuKDMyLDEzMzM2MTA5MzcpCj1lbmQKZy4oMjAwMCwgMSA8PCAxMDI0KQo=