Problem: You are given two positive integers n and k. Print the k-th positive integer that is not divisible by n.

For example, if n=3, and k=7, then all numbers that are not divisible by 3 are: 1, 2, 4, 5, 7, 8, 10, 11, 13 .... The 7-th number among them is 10.

Input

The first line contains an integer t (1 ≤ t ≤ 1000) — the number of test cases in the input. Next, t test cases are given, one per line.

Each test case is two positive integers n (2 ≤ n ≤ 10^9) and k (1 ≤ k ≤ 10^9).

Output

For each test case print the k-th positive integer that is not divisible by n.

Example

Input


6
3 7
4 12
2 1000000000
7 97
1000000000 1000000000
2 1


Output


10
15
1999999999
113
1000000001
1

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;
namespace variables {
struct triple {
  long long first, second, third;
};
}  // namespace variables
using namespace variables;
void testt();
namespace andu2006 {
void debug(set<long long> _var, string _name = "") {
  cerr << "Debug #set " << _name << " = [";
  for (auto it : _var) cerr << it << ",";
  cerr << "END] : "
       << "size = " << _var.size() << "\n\n";
}
void light_debug(set<long long> _var, string _name = "") {
  cerr << "Debug #set " << _name << " = [";
  for (auto it : _var) cerr << it << ",";
  cerr << "END]\n\n";
}
void debug(map<long long, long long> _var, string _name = "") {
  cerr << "Debug #map (size = " << _var.size() << ")\n";
  for (auto it : _var)
    cerr << _name << "[" << it.first << "] = " << it.second << '\n';
}
void light_debug(map<long long, long long> _var, string _name = "") {
  cerr << "Debug #map \n";
  for (auto it : _var)
    cerr << _name << "[" << it.first << "] = " << it.second << '\n';
}
void debug(deque<long long> _var, string _name = "") {
  cerr << "Debug #deque " << _name << " = [";
  for (auto it : _var) cerr << it << ",";
  cerr << "END] : "
       << "size = " << _var.size() << "\n\n";
}
void light_debug(deque<long long> _var, string _name = "") {
  cerr << "Debug #deque " << _name << " = [";
  for (auto it : _var) cerr << it << ",";
  cerr << "END]\n\n";
}
void debug(vector<long long> _var, string _name = "") {
  cerr << "Debug #vector " << _name << " = [";
  for (auto it : _var) cerr << it << ",";
  cerr << "END] : "
       << "size = " << _var.size() << "\n\n";
}
void light_debug(vector<long long> _var, string _name = "") {
  cerr << "Debug #vector " << _name << " = [";
  for (auto it : _var) cerr << it << ",";
  cerr << "END]\n\n";
}
void debug(string _var, string _name = "") {
  cerr << "Debug #string " << _name << " = ";
  cerr << '"' << _var << '"';
  cerr << " : "
       << "size = " << _var.size() << "\n\n";
}
void light_debug(string _var, string _name = "") {
  cerr << "Debug #string : " << _name << " = " << '"' << _var << '"' << "\n\n";
}
void debug(long long _var, string _name = "") {
  cerr << "Debug #int64 : " << _name << " = " << _var << "\n\n";
}
void debug(unsigned long long _var, string _name = "") {
  cerr << "Debug #uint64 : " << _name << " = " << _var << "\n\n";
}
void debug(unsigned int _var, string _name = "") {
  cerr << "Debug #uint32 : " << _name << " = " << _var << "\n\n";
}
void debug(int _var, string _name = "") {
  cerr << "Debug #int32 : " << _name << " = " << _var << "\n\n";
}
void debug(char _var, string _name = "") {
  cerr << "Debug #char : " << _name << " = '" << _var << "'\n\n";
}
void debug(bool _var, string _name = "") {
  cerr << "Debug #Boolean : " << _name << " = " << (_var ? "1 True" : "0 False")
       << "\n\n";
}
void multipleTests() {
  long long __test_count;
  cin >> __test_count;
  while (__test_count--) testt();
}
void done() { exit(0); }
void fastIO() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
}
void rseed() { srand(time(NULL)); }
void mreset(void* _pointer, unsigned int _size) { memset(_pointer, 0, _size); }
bool compare(long long a, long long b, char _cmp) {
  if (_cmp == '<')
    return a < b;
  else
    return a > b;
}
bool compair(pair<long long, long long> a, pair<long long, long long> b,
             char _cmp1 = '<', char _cmp2 = '<') {
  return compare(a.first, b.first, _cmp1) ||
         (a.first == b.first && compare(a.second, b.second, _cmp2));
}
struct objcompair {
  bool operator()(pair<long long, long long> a, pair<long long, long long> b,
                  char _cmp1 = '<', char _cmp2 = '<') {
    return compare(a.first, b.first, _cmp1) ||
           (a.first == b.first && compare(a.second, b.second, _cmp2));
  }
};
long long trailingZeroes(long long x) {
  if (x == 0) return 0;
  return (x & 1 ? 0 : 1 + trailingZeroes(x / 2));
}
long long trailingOnes(long long x) {
  if (x == 0) return 0;
  return (x & 1 ? 1 + trailingZeroes(x / 2) : 0);
}
long long trailingPowerOfTwo(long long x) { return 1ll << trailingZeroes(x); }
long long popCount(long long x) {
  if (x == 0) return x;
  return 1 + popCount(x & (x - 1));
}
long long binPow(long long _num, long long _exponent, long long _mod) {
  if (_exponent == 0) return 1;
  long long _half = binPow(_num, _exponent / 2, _mod);
  return _half * _half % _mod * (_exponent & 1 ? _num : 1) % _mod;
}
long long modularInverse(long long _x, long long _mod) {
  return binPow(_x, _mod - 2, _mod);
}
long long comb(long long _n, long long _k, long long _mod) {
  long long _ans = 1;
  for (long long i = _n - _k + 1; i <= _n; i++) _ans = _ans * i % _mod;
  for (long long i = 2; i <= _k; i++)
    _ans = _ans * modularInverse(i, _mod) % _mod;
  return _ans;
}
const long double PI = acos(-1);
const long double rad = 180 / PI;
long double degsin(long long __alpha) { return sin(__alpha / rad); }
long double degcos(long long __alpha) { return cos(__alpha / rad); }
long double degtan(long long __alpha) { return tan(__alpha / rad); }
long double degasin(long long _sine) { return asin(_sine) * rad; }
long double degacos(long long _cosine) { return acos(_cosine) * rad; }
long double degatan(long long _tangent) { return atan(_tangent) * rad; }
long long divisors(long long _num) {
  if (_num == 0) return 0;
  long long _cnt = 1, _exp;
  while (_num % 2 == 0) {
    _cnt++;
    _num /= 2;
  }
  for (long long _divisor = 3; _divisor * _divisor <= _num; _divisor += 2) {
    _exp = 0;
    while (_num % _divisor == 0) {
      _exp++;
      _num /= _divisor;
    }
    _cnt *= (_exp + 1);
  }
  if (_num > 1) _cnt *= 2;
  return _cnt;
}
long long eulerTotient(long long _num) {
  if (_num == 0) return 0;
  long long _cnt = 1, _divisor = 2;
  while (_num % _divisor == 0) {
    _cnt *= _divisor;
    _num /= _divisor;
  }
  _cnt /= _divisor;
  _cnt *= (_divisor - 1);
  for (long long _divisor = 3; _divisor * _divisor <= _num; _divisor += 2) {
    if (_num % _divisor == 0) {
      while (_num % _divisor == 0) {
        _cnt *= _divisor;
        _num /= _divisor;
      }
      _cnt /= _divisor;
      _cnt *= (_divisor - 1);
    }
  }
  if (_num > 1) _cnt *= _num - 1;
  return _cnt;
}
void sieve(bool* _startpos, bool* _endpos) {
  long long _maxnum = _endpos - _startpos;
  for (long long i = 4; i < _maxnum; i += 2) *(_startpos + i) = 1;
  for (long long i = 3; i * i < _maxnum; i += 2)
    if (*(_startpos + i) == 0)
      for (long long j = i * i; j < _maxnum; j += i) *(_startpos + j) = 1;
}
}  // namespace andu2006
void testt() {
  long long n, k;
  cin >> n >> k;
  k--;
  cout << n * (k / (n - 1)) + 1 + k % (n - 1) << '\n';
}
int main() {
  andu2006::fastIO();
  andu2006::multipleTests();
  andu2006::done();
}