import java.util.*;
import java.math.*;
import java.io.*;
class Ideone {
public static void main
(String[] args
){ new Ideone().run();
}
void run(){
Obj root = new Obj(1);
root = insertVal(root, 4);
root = insertVal(root, 7);
root = insertVal(root, 9);
root = insertVal(root, 12);
root = insertVal(root, 13);
root = insertVal(root, 43);
root = insertVal(root, 45);
System.
out.
println(floor
(root,
15)); }
int floor(Obj root, int val){
boolean found = false;
while(root != null){
if(root.val==val){
return val;
}
if(val < root.val){
root = root.left;
}else{
found = true;
ans = root.val;
root = root.right;
}
}
if(!found){
throw new RuntimeException("There is no smaller value than " + val
+ " in the BST"); }
return ans;
}
Obj insertVal(Obj root, int val){
if(root==null){
return new Obj(val);
}
if(val < root.val){
root.left = insertVal(root.left, val);
}else{
root.right = insertVal(root.right, val);
}
return root;
}
}
class Obj{
int val;
Obj right;
Obj left;
public Obj(int val){
this.val = val;
right = left = null;
}
return val + " ";
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5tYXRoLio7CmltcG9ydCBqYXZhLmlvLio7CgpjbGFzcyBJZGVvbmUgewogICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpewogICAgICAgICAgbmV3IElkZW9uZSgpLnJ1bigpOwogICAgIH0KCiAgICAgdm9pZCBydW4oKXsKICAgICAgICAgIE9iaiByb290ID0gbmV3IE9iaigxKTsKICAgICAgICAgIHJvb3QgPSBpbnNlcnRWYWwocm9vdCwgNCk7CiAgICAgICAgICByb290ID0gaW5zZXJ0VmFsKHJvb3QsIDcpOwogICAgICAgICAgcm9vdCA9IGluc2VydFZhbChyb290LCA5KTsKICAgICAgICAgIHJvb3QgPSBpbnNlcnRWYWwocm9vdCwgMTIpOwogICAgICAgICAgcm9vdCA9IGluc2VydFZhbChyb290LCAxMyk7CiAgICAgICAgICByb290ID0gaW5zZXJ0VmFsKHJvb3QsIDQzKTsKICAgICAgICAgIHJvb3QgPSBpbnNlcnRWYWwocm9vdCwgNDUpOwogICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGZsb29yKHJvb3QsIDE1KSk7CiAgICAgfQogICAgIAogICAgIGludCBmbG9vcihPYmogcm9vdCwgaW50IHZhbCl7CiAgICAJIGludCBhbnMgPSBJbnRlZ2VyLk1JTl9WQUxVRTsKICAgIAkgYm9vbGVhbiBmb3VuZCA9IGZhbHNlOwogICAgCSB3aGlsZShyb290ICE9IG51bGwpewogICAgCQkgaWYocm9vdC52YWw9PXZhbCl7CiAgICAJCQkgcmV0dXJuIHZhbDsKICAgIAkJIH0KICAgIAkJIGlmKHZhbCA8IHJvb3QudmFsKXsKICAgIAkJCSByb290ID0gcm9vdC5sZWZ0OwogICAgCQkgfWVsc2V7CiAgICAJCSAJZm91bmQgPSB0cnVlOwogICAgCQkJIGFucyA9IHJvb3QudmFsOwogICAgCQkJIHJvb3QgPSByb290LnJpZ2h0OwogICAgCQkgfQogICAgCSB9CiAgICAJIGlmKCFmb3VuZCl7CiAgICAJIAl0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiVGhlcmUgaXMgbm8gc21hbGxlciB2YWx1ZSB0aGFuICIgKyB2YWwgKyAiIGluIHRoZSBCU1QiKTsKICAgIAkgfQogICAgCSByZXR1cm4gYW5zOwogICAgIH0KICAgICAKICAgICBPYmogaW5zZXJ0VmFsKE9iaiByb290LCBpbnQgdmFsKXsKICAgIAkgaWYocm9vdD09bnVsbCl7CiAgICAJCSByZXR1cm4gbmV3IE9iaih2YWwpOwogICAgCSB9CiAgICAJIGlmKHZhbCA8IHJvb3QudmFsKXsKICAgIAkJIHJvb3QubGVmdCA9IGluc2VydFZhbChyb290LmxlZnQsIHZhbCk7CiAgICAJIH1lbHNlewogICAgCQkgcm9vdC5yaWdodCA9IGluc2VydFZhbChyb290LnJpZ2h0LCB2YWwpOwogICAgCSB9CiAgICAJIHJldHVybiByb290OwogICAgIH0KfQpjbGFzcyBPYmp7CiAgICAgaW50IHZhbDsKICAgICBPYmogcmlnaHQ7CiAgICAgT2JqIGxlZnQ7CiAgICAgCiAgICAgcHVibGljIE9iaihpbnQgdmFsKXsKICAgICAgICAgIHRoaXMudmFsID0gdmFsOwogICAgICAgICAgcmlnaHQgPSBsZWZ0ID0gbnVsbDsKICAgICB9CgogICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKXsKICAgICAgICAgIHJldHVybiB2YWwgKyAiICI7CiAgICAgfQp9Cg==