/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
static int[] occurrences;
static int[] target;
static void bruteForce()
{
occurrences = new int[10];
target = new int[10];
for (int i = 0; i < 10; i++)
occurrences[i] = 1;
bruteForce(0);
}
static boolean bruteForce(int value)
{
if (value > 9)
{
for (int i = 0; i < 10; i++)
if (occurrences[i] != target[i])
return false;
return true;
}
for (int i = 1; i < 10; i++)
{
target[value] = i;
// fail early - not strictly necessary, but should help running time
if (value >= i && occurrences[i] + 1 > target[i])
continue;
occurrences[i]++;
// recurse
if (bruteForce(value + 1))
return true;
occurrences[i]--;
}
return false;
}
public static void main
(String[] args
) {
bruteForce();
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKICAgc3RhdGljIGludFtdIG9jY3VycmVuY2VzOwogICBzdGF0aWMgaW50W10gdGFyZ2V0OwoKICAgc3RhdGljIHZvaWQgYnJ1dGVGb3JjZSgpCiAgIHsKICAgICAgb2NjdXJyZW5jZXMgPSBuZXcgaW50WzEwXTsKICAgICAgdGFyZ2V0ID0gbmV3IGludFsxMF07CiAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykKICAgICAgICAgb2NjdXJyZW5jZXNbaV0gPSAxOwoKICAgICAgYnJ1dGVGb3JjZSgwKTsKICAgfQogICAKICAgCiAgIHN0YXRpYyBib29sZWFuIGJydXRlRm9yY2UoaW50IHZhbHVlKQogICB7CiAgICAgIGlmICh2YWx1ZSA+IDkpCiAgICAgIHsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKQogICAgICAgICAgICBpZiAob2NjdXJyZW5jZXNbaV0gIT0gdGFyZ2V0W2ldKQogICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihBcnJheXMudG9TdHJpbmcodGFyZ2V0KSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CiAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgMTA7IGkrKykKICAgICAgewogICAgICAgIHRhcmdldFt2YWx1ZV0gPSBpOwogICAgICAgIC8vIGZhaWwgZWFybHkgLSBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5LCBidXQgc2hvdWxkIGhlbHAgcnVubmluZyB0aW1lCiAgICAgICAgaWYgKHZhbHVlID49IGkgJiYgb2NjdXJyZW5jZXNbaV0gKyAxID4gdGFyZ2V0W2ldKQogICAgICAgICAgY29udGludWU7CiAgICAgICAgb2NjdXJyZW5jZXNbaV0rKzsKCiAgICAgICAgLy8gcmVjdXJzZQogICAgICAgIGlmIChicnV0ZUZvcmNlKHZhbHVlICsgMSkpCiAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgCiAgICAgICAgb2NjdXJyZW5jZXNbaV0tLTsKICAgICAgfQogICAgICByZXR1cm4gZmFsc2U7CiAgIH0KCiAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpCiAgIHsKICAgICAgYnJ1dGVGb3JjZSgpOwogICB9Cn0=
[1, 7, 3, 2, 1, 1, 1, 2, 1, 1]