#include <bits/stdc++.h>
using namespace std;
using ld = long double;
using vi = vector<int>;
using vll = vector<long long int>;
using vd = vector<double>;
using vvi = vector<vi>;
int ctoi(char c) { return c - '0'; }
int slen(string s) { return s.length(); }
int vsize(vi a) { return (int)a.size(); }
int in() {
  int x;
  cin >> x;
  return x;
}
long long int n;
void kmin(long long int n, long long int m) {
  long long int val = n / m;
  n = n - (val * m);
  long long int val1 = (m - n) * (val - 1) * (val) / 2;
  long long int val2 = n * val * (val + 1) / 2;
  long long int val3 = val1 + val2;
  cout << val3 << " ";
}
void kmax(long long int n, long long int m) {
  n = n - (m - 1);
  long long int val = n * (n - 1) / 2;
  cout << val;
  cout << endl;
}
const int M = 1000000;
long long int prime(long long int x) {
  for (long long int i = 2; i * i <= x; i++) {
    if (x % i == 0) return i;
  }
  return x;
}
vector<pair<long long int, long long int> > v;
set<long long int> s;
bool check(long long int x) {
  for (int i = 1; i < n; i++) {
    if (v[i].first % x != 0 && v[i].second % x != 0) {
      return 0;
    }
  }
  return 1;
}
void get_prime(long long int x) {
  if (x % 2 == 0) s.insert(2);
  while (x % 2 == 0) x = x / 2;
  for (int i = 3; i <= sqrt(x); i += 2) {
    if (x % i == 0) {
      s.insert(i);
      while (x % i == 0) x = x / i;
    }
  }
  if (x > 2) {
    s.insert(x);
  }
}
vll ar[1000000];
set<long long int> cycle;
vll path;
bool vis[1000000];
int isp(int x) {
  if (x < 2) return 0;
  for (int i = 2; i * i <= x; i++)
    if (x % i == 0) return 0;
  return 1;
}
void dfs(int n, int m, int x, int y, bool visited[105][105]) {
  if (x >= n || y >= m || x < 0 || y < 0 || visited[x][y]) return;
  visited[x][y] = true;
  cout << x + 1 << " " << y + 1 << "\n";
  for (int i = 0; i < n; i++) dfs(n, m, i, y, visited);
  for (int i = 0; i < m; i++) dfs(n, m, x, i, visited);
}
void solve() {
  long long int n, m, ans;
  cin >> n >> m;
  if (n == m) {
    cout << 0;
    return;
  }
  long long int diff = (abs)(n - m);
  long long int i = 1;
  while (true) {
    ans = i * (i + 1) / 2;
    if (diff == ans) {
      ans = i;
      break;
    }
    if (diff < ans) {
      if (ans % 2 == diff % 2) {
        ans = i;
        break;
      }
    }
    i++;
  }
  cout << ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  ;
  long long int t = 1;
  cin >> t;
  while (t--) {
    solve();
    cout << "\n";
  }
  return 0;
}

### Prompt

In cpp, your task is to solve the following problem:

You are given two integers a and b. You can perform a sequence of operations: during the first operation you choose one of these numbers and increase it by 1; during the second operation you choose one of these numbers and increase it by 2, and so on. You choose the number of these operations yourself.

For example, if a = 1 and b = 3, you can perform the following sequence of three operations: 

  1. add 1 to a, then a = 2 and b = 3; 
  2. add 2 to b, then a = 2 and b = 5; 
  3. add 3 to a, then a = 5 and b = 5. 



Calculate the minimum number of operations required to make a and b equal. 

Input

The first line contains one integer t (1 ≤ t ≤ 100) — the number of test cases.

The only line of each test case contains two integers a and b (1 ≤ a, b ≤ 10^9).

Output

For each test case print one integer — the minimum numbers of operations required to make a and b equal. 

Example

Input


3
1 3
11 11
30 20


Output


3
0
4

Note

First test case considered in the statement.

In the second test case integers a and b are already equal, so you don't need to perform any operations.

In the third test case you have to apply the first, the second, the third and the fourth operation to b (b turns into 20 + 1 + 2 + 3 + 4 = 30).

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
using ld = long double;
using vi = vector<int>;
using vll = vector<long long int>;
using vd = vector<double>;
using vvi = vector<vi>;
int ctoi(char c) { return c - '0'; }
int slen(string s) { return s.length(); }
int vsize(vi a) { return (int)a.size(); }
int in() {
  int x;
  cin >> x;
  return x;
}
long long int n;
void kmin(long long int n, long long int m) {
  long long int val = n / m;
  n = n - (val * m);
  long long int val1 = (m - n) * (val - 1) * (val) / 2;
  long long int val2 = n * val * (val + 1) / 2;
  long long int val3 = val1 + val2;
  cout << val3 << " ";
}
void kmax(long long int n, long long int m) {
  n = n - (m - 1);
  long long int val = n * (n - 1) / 2;
  cout << val;
  cout << endl;
}
const int M = 1000000;
long long int prime(long long int x) {
  for (long long int i = 2; i * i <= x; i++) {
    if (x % i == 0) return i;
  }
  return x;
}
vector<pair<long long int, long long int> > v;
set<long long int> s;
bool check(long long int x) {
  for (int i = 1; i < n; i++) {
    if (v[i].first % x != 0 && v[i].second % x != 0) {
      return 0;
    }
  }
  return 1;
}
void get_prime(long long int x) {
  if (x % 2 == 0) s.insert(2);
  while (x % 2 == 0) x = x / 2;
  for (int i = 3; i <= sqrt(x); i += 2) {
    if (x % i == 0) {
      s.insert(i);
      while (x % i == 0) x = x / i;
    }
  }
  if (x > 2) {
    s.insert(x);
  }
}
vll ar[1000000];
set<long long int> cycle;
vll path;
bool vis[1000000];
int isp(int x) {
  if (x < 2) return 0;
  for (int i = 2; i * i <= x; i++)
    if (x % i == 0) return 0;
  return 1;
}
void dfs(int n, int m, int x, int y, bool visited[105][105]) {
  if (x >= n || y >= m || x < 0 || y < 0 || visited[x][y]) return;
  visited[x][y] = true;
  cout << x + 1 << " " << y + 1 << "\n";
  for (int i = 0; i < n; i++) dfs(n, m, i, y, visited);
  for (int i = 0; i < m; i++) dfs(n, m, x, i, visited);
}
void solve() {
  long long int n, m, ans;
  cin >> n >> m;
  if (n == m) {
    cout << 0;
    return;
  }
  long long int diff = (abs)(n - m);
  long long int i = 1;
  while (true) {
    ans = i * (i + 1) / 2;
    if (diff == ans) {
      ans = i;
      break;
    }
    if (diff < ans) {
      if (ans % 2 == diff % 2) {
        ans = i;
        break;
      }
    }
    i++;
  }
  cout << ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  ;
  long long int t = 1;
  cin >> t;
  while (t--) {
    solve();
    cout << "\n";
  }
  return 0;
}

```