#include<iostream> using namespace std; struct TreeNode { int val; struct TreeNode* left; struct TreeNode* right; TreeNode(int x) :val(x), left(nullptr), right(nullptr) {} }; TreeNode* insertBST(TreeNode* root, int val) { if (!root) return new TreeNode(val); if (val < root->val) root->left = insertBST(root->left, val); else root->right = insertBST(root->right, val); return root; } void MidOrder(TreeNode* root, int& k, int& res) { if (root == nullptr || k <= 0) return; MidOrder(root->left, k, res); k--; if (k == 0) { res = root->val; return; } MidOrder(root->right, k, res); } int main() { int n; TreeNode* root = nullptr; while (cin >> n) { root = insertBST(root, n); if (cin.get() == '\n') break; } int k; cin >> k; int res = 0; MidOrder(root, k, res); cout << res; return 0; }