#include <cassert>
#include <cstdlib>
#include <functional>
#include <iostream>
#include <string>
using Bits = std::string;
namespace {
void binary(int n, int k, std::function<void(Bits)> yield) {
if (k == 0) // no bits set
yield(Bits(n, '0'));
else if (n == k) // all bits set
yield(Bits(k, '1'));
else {
assert(n > k && k > 0);
binary(n - 1, k, [&yield](Bits bits) { yield("0" + bits); });
binary(n - 1, k - 1, [&yield](Bits bits) { yield("1" + bits); });
}
}
}
int main() {
int n, k;
if(!(std::cin >> n >> k && n >= k && k >= 0))
exit(EXIT_FAILURE);
binary(n, k, [](Bits bits) { std::cout << bits << '\n'; });
}
I2luY2x1ZGUgPGNhc3NlcnQ+CiNpbmNsdWRlIDxjc3RkbGliPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgQml0cyA9IHN0ZDo6c3RyaW5nOwoKbmFtZXNwYWNlIHsKICB2b2lkIGJpbmFyeShpbnQgbiwgaW50IGssIHN0ZDo6ZnVuY3Rpb248dm9pZChCaXRzKT4geWllbGQpIHsKICAgIGlmIChrID09IDApIC8vIG5vIGJpdHMgc2V0CiAgICAgIHlpZWxkKEJpdHMobiwgJzAnKSk7CiAgICBlbHNlIGlmIChuID09IGspIC8vIGFsbCBiaXRzIHNldAogICAgICB5aWVsZChCaXRzKGssICcxJykpOwogICAgZWxzZSB7CiAgICAgIGFzc2VydChuID4gayAmJiBrID4gMCk7CiAgICAgIGJpbmFyeShuIC0gMSwgaywgICAgIFsmeWllbGRdKEJpdHMgYml0cykgeyB5aWVsZCgiMCIgKyBiaXRzKTsgfSk7CiAgICAgIGJpbmFyeShuIC0gMSwgayAtIDEsIFsmeWllbGRdKEJpdHMgYml0cykgeyB5aWVsZCgiMSIgKyBiaXRzKTsgfSk7CiAgICB9CiAgfQp9CgoKaW50IG1haW4oKSB7CiAgaW50IG4sIGs7CiAgaWYoIShzdGQ6OmNpbiA+PiBuID4+IGsgJiYgbiA+PSBrICYmIGsgPj0gMCkpCiAgICBleGl0KEVYSVRfRkFJTFVSRSk7CgogIGJpbmFyeShuLCBrLCBbXShCaXRzIGJpdHMpIHsgc3RkOjpjb3V0IDw8IGJpdHMgPDwgJ1xuJzsgfSk7Cn0K