import java.util.ArrayList;
import java.util.List;
class Combinations {
public static void main
(String[] args
) { ArrayList<List<Character>> array = new ArrayList<List<Character>>();
ArrayList<Character> a1 = new ArrayList<Character>();
ArrayList<Character> a2 = new ArrayList<Character>();
ArrayList<Character> a3 = new ArrayList<Character>();
a1.add('1');
a1.add('2');
a1.add('3');
a2.add('A');
a2.add('B');
a2.add('C');
a3.add('*');
a3.add('#');
array.add(a1);
array.add(a2);
array.add(a3);
List<String> result = new ArrayList<String>();
GeneratePermutations(array, result, 0, "");
}
public static void GeneratePermutations
(List
<List
<Character
>> Lists, List
<String
> result,
int depth,
String current
) {
if(depth == Lists.size())
{
result.add(current);
return;
}
for(int i = 0; i < Lists.get(depth).size(); ++i)
{
GeneratePermutations(Lists, result, depth + 1, current + Lists.get(depth).get(i));
}
}
}
aW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CmltcG9ydCBqYXZhLnV0aWwuTGlzdDsKY2xhc3MgQ29tYmluYXRpb25zIHsKIAoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewoJCUFycmF5TGlzdDxMaXN0PENoYXJhY3Rlcj4+IGFycmF5ID0gbmV3IEFycmF5TGlzdDxMaXN0PENoYXJhY3Rlcj4+KCk7CiAKCQlBcnJheUxpc3Q8Q2hhcmFjdGVyPiBhMSA9IG5ldyBBcnJheUxpc3Q8Q2hhcmFjdGVyPigpOwoJCUFycmF5TGlzdDxDaGFyYWN0ZXI+IGEyID0gbmV3IEFycmF5TGlzdDxDaGFyYWN0ZXI+KCk7CgkJQXJyYXlMaXN0PENoYXJhY3Rlcj4gYTMgPSBuZXcgQXJyYXlMaXN0PENoYXJhY3Rlcj4oKTsKCQlhMS5hZGQoJzEnKTsKCQlhMS5hZGQoJzInKTsKCQlhMS5hZGQoJzMnKTsKIAoJCWEyLmFkZCgnQScpOwoJCWEyLmFkZCgnQicpOwoJCWEyLmFkZCgnQycpOwogCgkJYTMuYWRkKCcqJyk7CgkJYTMuYWRkKCcjJyk7CiAKCQlhcnJheS5hZGQoYTEpOwoJCWFycmF5LmFkZChhMik7CgkJYXJyYXkuYWRkKGEzKTsKIAoJCUxpc3Q8U3RyaW5nPiByZXN1bHQgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKCQlHZW5lcmF0ZVBlcm11dGF0aW9ucyhhcnJheSwgcmVzdWx0LCAwLCAiIik7CiAKCQlmb3IoU3RyaW5nIHN0ciA6IHJlc3VsdCkgU3lzdGVtLm91dC5wcmludGxuKHN0cik7Cgl9CiAKCXB1YmxpYyBzdGF0aWMgdm9pZCBHZW5lcmF0ZVBlcm11dGF0aW9ucyhMaXN0PExpc3Q8Q2hhcmFjdGVyPj4gTGlzdHMsIExpc3Q8U3RyaW5nPiByZXN1bHQsIGludCBkZXB0aCwgU3RyaW5nIGN1cnJlbnQpCgl7CgkgICAgaWYoZGVwdGggPT0gTGlzdHMuc2l6ZSgpKQoJICAgIHsKCSAgICAgICByZXN1bHQuYWRkKGN1cnJlbnQpOwoJICAgICAgIHJldHVybjsKCSAgICAgfQogCgkgICAgZm9yKGludCBpID0gMDsgaSA8IExpc3RzLmdldChkZXB0aCkuc2l6ZSgpOyArK2kpCgkgICAgewoJICAgICAgICBHZW5lcmF0ZVBlcm11dGF0aW9ucyhMaXN0cywgcmVzdWx0LCBkZXB0aCArIDEsIGN1cnJlbnQgKyBMaXN0cy5nZXQoZGVwdGgpLmdldChpKSk7CgkgICAgfQoJfQp9