#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;
}