Petr wants to make a calendar for current month. For this purpose he draws a table in which columns correspond to weeks (a week is seven consequent days from Monday to Sunday), rows correspond to weekdays, and cells contain dates. For example, a calendar for January 2017 should look like on the picture:

<image>

Petr wants to know how many columns his table should have given the month and the weekday of the first date of that month? Assume that the year is non-leap.

Input

The only line contain two integers m and d (1 ≤ m ≤ 12, 1 ≤ d ≤ 7) — the number of month (January is the first month, December is the twelfth) and the weekday of the first date of this month (1 is Monday, 7 is Sunday).

Output

Print single integer: the number of columns the table should have.

Examples

Input

1 7


Output

6


Input

1 1


Output

5


Input

11 6


Output

5

Note

The first example corresponds to the January 2017 shown on the picture in the statements.

In the second example 1-st January is Monday, so the whole month fits into 5 columns.

In the third example 1-st November is Saturday and 5 columns is enough.
#include <bits/stdc++.h>
using namespace std;
const long long int mod = 1000000007;
const long long int N = 3e5, M = N;
vector<int> g[N];
long long int a[N];
long long int mpow(long long int base, long long int exp) {
  base %= mod;
  int result = 1;
  while (exp > 0) {
    if (exp & 1) result = ((long long int)result * base) % mod;
    base = ((long long int)base * base) % mod;
    exp >>= 1;
  }
  return result;
}
void ipgraph(long long int n, long long int m) {
  long long int i, u, v;
  while (m--) {
    cin >> u >> v;
    g[u - 1].push_back(v - 1);
    g[v - 1].push_back(u - 1);
  }
}
int sgn(long long int n) {
  if (n > 0) {
    return 1;
  } else {
    return -1;
  }
}
long long int max_digit(long long int n) {
  long long int lar = 0;
  while (n) {
    long long int r = n % 10;
    lar = max(r, lar);
    n = n / 10;
  }
  return lar;
}
long long int min_digit(long long int n) {
  long long int lar = 9;
  while (n) {
    long long int r = n % 10;
    lar = min(r, lar);
    n = n / 10;
  }
  return lar;
}
int prime(long long int n) {
  for (long long int i = 2; i < n; i++) {
    if (n % i == 0) {
      return 0;
    }
  }
  return 1;
}
void dfs(long long int u, long long int par) {
  for (int v : g[u]) {
    if (v == par) continue;
    dfs(v, u);
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  long long int m, d;
  cin >> m >> d;
  long long int sum = 30;
  if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) {
    sum = 31;
  }
  if (m == 2) {
    sum = 28;
  }
  long long int ans = 1;
  for (long long int i = 1; i < sum; i++) {
    d++;
    if (d > 7) {
      d = 1;
      ans++;
    }
  }
  cout << ans;
  return 0;
}
