/* 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
{
{
System.
out.
println(countTrees
(3,
1,
3)); }
public static int countTrees(int N, int curH, int H) {
if ( curH > H ) return 0;
if (N <=1) {
return(1);
}
else {
int sum = 0;
int left, right, root;
for (root=1; root<=N; root++) {
left = countTrees(root - 1, curH+1, H);
right = countTrees(N - root, curH+1, H);
// number of possible trees with this root == left*right
sum += left*right;
}
return(sum);
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCVN5c3RlbS5vdXQucHJpbnRsbihjb3VudFRyZWVzKDMsIDEsIDMpKTsKCX0KCQogcHVibGljIHN0YXRpYyBpbnQgY291bnRUcmVlcyhpbnQgTiwgaW50IGN1ckgsIGludCBIKSB7CiAgaWYgKCBjdXJIID4gSCApIHJldHVybiAwOwogIAogIGlmIChOIDw9MSkgeyAKICAgIHJldHVybigxKTsgCiAgfSAKICBlbHNlIHsKICAgIGludCBzdW0gPSAwOyAKICAgIGludCBsZWZ0LCByaWdodCwgcm9vdDsKCiAgICBmb3IgKHJvb3Q9MTsgcm9vdDw9Tjsgcm9vdCsrKSB7IAogICAgICBsZWZ0ID0gY291bnRUcmVlcyhyb290IC0gMSwgY3VySCsxLCBIKTsgCiAgICAgIHJpZ2h0ID0gY291bnRUcmVlcyhOIC0gcm9vdCwgY3VySCsxLCBIKTsKCiAgICAgIC8vIG51bWJlciBvZiBwb3NzaWJsZSB0cmVlcyB3aXRoIHRoaXMgcm9vdCA9PSBsZWZ0KnJpZ2h0IAogICAgICBzdW0gKz0gbGVmdCpyaWdodDsgCiAgICB9CgogICAgcmV0dXJuKHN1bSk7IAogIH0gCn0gCn0=