#include<iostream>
#include <algorithm>
using namespace std;
long long array_sum(long long mid, int n){ // mid 값 이하의 숫자들이 몇개인지를 구하는 함수.
long long answer = 0; //return을 할 값.
for(int i = 1;i<=n;i++){ // 1부터 n까지 아래에서 위로 가자.
if(n < (mid / i)){ // 만약 n 이 mid / i 보다 작다면 즉, n행이라는 범위를 넘어선다면
answer += n; // n을 더해주자.
}
else{
answer += (mid / i); //아니라면 mid / i 를 더해주자.
}
if(i > mid){ // 만약 i가 mid보다 커진다면 break를 하자.
break;
}
}
return answer;
}
int main(){
long long n,k;
cin>>n>>k;
long long low = 1;
long long high = n*n; //최댓값은 n * n 이다.
long long mid = 0;
long long answer = 0;
while(low <= high){
mid = (low + high) / 2;
if(array_sum(mid,n) < k){
low = mid + 1;
}
else{
answer = mid;
high = mid - 1;
}
}
cout<<answer<<endl;
return 0;
}