After finishing eating her bun, Alyona came up with two integers n and m. She decided to write down two columns of integers — the first column containing integers from 1 to n and the second containing integers from 1 to m. Now the girl wants to count how many pairs of integers she can choose, one from the first column and the other from the second column, such that their sum is divisible by 5.

Formally, Alyona wants to count the number of pairs of integers (x, y) such that 1 ≤ x ≤ n, 1 ≤ y ≤ m and <image> equals 0.

As usual, Alyona has some troubles and asks you to help.

Input

The only line of the input contains two integers n and m (1 ≤ n, m ≤ 1 000 000).

Output

Print the only integer — the number of pairs of integers (x, y) such that 1 ≤ x ≤ n, 1 ≤ y ≤ m and (x + y) is divisible by 5.

Examples

Input

6 12


Output

14


Input

11 14


Output

31


Input

1 5


Output

1


Input

3 8


Output

5


Input

5 7


Output

7


Input

21 21


Output

88

Note

Following pairs are suitable in the first sample case: 

  * for x = 1 fits y equal to 4 or 9; 
  * for x = 2 fits y equal to 3 or 8; 
  * for x = 3 fits y equal to 2, 7 or 12; 
  * for x = 4 fits y equal to 1, 6 or 11; 
  * for x = 5 fits y equal to 5 or 10; 
  * for x = 6 fits y equal to 4 or 9. 



Only the pair (1, 4) is suitable in the third sample case.
#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:64000000")
const int infi = 1e9 + 7;
const long long infl = 1e18 + 7;
const long double pi = acosl(-1.0);
const long double eps = 1e-8;
int eq(long double a, long double b) { return fabsl(a - b) <= eps; }
int le(long double a, long double b) { return a <= b || eq(a, b); }
struct point {
  long double x, y;
  point() {}
  point(long double x, long double y) : x(x), y(y) {}
  point operator+(const point &a) const { return point(x + a.x, y + a.y); }
  point operator-(const point &a) const { return point(x - a.x, y - a.y); }
  point operator*(long double a) const { return point(x * a, y * a); }
  point operator/(long double a) const { return point(x / a, y / a); }
  int operator==(const point &a) const { return eq(a.x, x) && eq(a.y, y); }
};
template <class T>
T sqr(T a) {
  return a * a;
}
long double dist(const point &a) { return sqrtl(sqr(a.x) + sqr(a.y)); }
long double dist(const point &a, const point &b) { return dist(a - b); }
long double sn(const point &a, const point &b) { return a.x * b.y - a.y * b.x; }
long double cs(const point &a, const point &b) { return a.x * b.x + a.y * b.y; }
pair<point, long double> ar[100500];
struct line {
  long double a, b, c;
  line() {}
  line(long double a, long double b, long double c) : a(a), b(b), c(c) {}
  long double get(const point &q) const { return a * q.x + b * q.y + c; }
  int in(const point &q) const { return eq(get(q), 0); }
};
long double dist(const line &a, const point &b) {
  return fabsl(a.get(b)) / sqrtl(sqr(a.a) + sqr(a.b));
}
pair<point, point> inter(const point &p1, long double r1, const line &l) {
  long double d = dist(l, p1);
  point nr = point(l.a, l.b);
  if (!eq(dist(nr), 0)) nr = nr / dist(nr) * d;
  point a = p1 + nr;
  if (!l.in(a)) {
    nr = nr * (-1);
    a = p1 + nr;
  }
  long double z = sqr(r1);
  long double x = sqr(d);
  long double b = sqrtl(max(z - x, (long double)0));
  point q = point(nr.y, -nr.x);
  if (!eq(dist(q), 0)) q = q / dist(q) * b;
  pair<point, point> ans;
  ans.first = a + q;
  ans.second = a - q;
  return ans;
}
pair<point, point> inter(const point &p1, long double r1, const point &p2,
                         long double r2) {
  r1 = min(r1, sqrtl(sqr(dist(p1, p2)) - sqr(r2)));
  point tmp = p2 - p1;
  pair<point, point> ans =
      inter(point(0, 0), r1,
            line(-2.0 * tmp.x, -2.0 * tmp.y,
                 sqr(tmp.x) + sqr(tmp.y) + sqr(r1) - sqr(r2)));
  ans.first = ans.first + p1;
  ans.second = ans.second + p1;
  return ans;
}
long double get_ang(long double a) { return -a + pi; }
long double get_ang(const point &a) { return get_ang(atan2l(a.x, a.y)); }
int check1(point a, point b, long long r) {
  long long d = sqr((long long)a.x - (long long)b.x) +
                sqr((long long)a.y - (long long)b.y);
  return r >= 3000000000LL || d <= sqr(r);
}
int check2(point a, point b, long long r) {
  long long d = sqr((long long)a.x - (long long)b.x) +
                sqr((long long)a.y - (long long)b.y);
  return r <= 3000000000LL && sqr(r) <= d;
}
int main() {
  cin.sync_with_stdio(false);
  cin.tie(0);
  int n, m;
  cin >> n >> m;
  int cnt[] = {0, 0, 0, 0, 0};
  for (int i = 1; i <= m; ++i) cnt[i % 5]++;
  long long ans = 0;
  for (int i = 1; i <= n; ++i) {
    int a = i % 5;
    a = (5 - a) % 5;
    ans += cnt[a];
  }
  cout << ans;
  return 0;
}
