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.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.StringTokenizer;

public class Main {

	static IO io;
	static long[][] array;

	
	static double leftMostX = 1000000000000000005D;
	static double rightMostX = +1000000000000000005D;
	static double topMostY = -1000000000000000005D;
	static double bottomMostY = 1000000000000000005D;
	static boolean safe = false;
	
	static int max = 1000000005;
	public static void main(String args[]) throws Exception {

		io = new IO();
		io.init();

		//==============================================
		int n = io.nextInt();
		int m = io.nextInt();
		
		long ans = 0 ;
		
		long n1,n2,n3,n4,n0;
		long m1,m2,m3,m4,m0;
		
		
		long base = n/5;
		long res = n%5;
		
		n1 = base+(res>=1?1:0);
		n2 = base+(res>=2?1:0);
		n3 = base+(res>=3?1:0);
		n4 = base+(res>=4?1:0);
		n0 = base;
		
		base = m/5;
		res = m%5;
		
		m1 = base+(res>=1?1:0);
		m2 = base+(res>=2?1:0);
		m3 = base+(res>=3?1:0);
		m4 = base+(res>=4?1:0);
		m0 = base;
		
		
		ans += n1*m4;
		ans += n2*m3;
		ans += n3*m2;
		ans += n4*m1;
		ans += n0*m0;
		
		io.println(ans);
		//=============================================
		io.destroy();

	}

	static void process(long x,long y,long r){
		if( x*x +y*y <= r*r)
			safe = true;
		
		//on x-axis
		if( Math.abs(y) <= r){
			double base = Math.sqrt(r*r - y*y);
			
			if( x < 0 ){
				rightMostX = Math.max(rightMostX,x+base);
			}
			
			if( x > 0){
				leftMostX = Math.min(leftMostX, x-base);
			}
		}
		
		//on y-axis
		if( Math.abs(x) <= r){
			double base = Math.sqrt(r*r - x*x);
			
			if( y > 0 ){
				bottomMostY = Math.min(bottomMostY, y-base);
			}
			
			if( y < 0 ){
				topMostY = Math.max(topMostY,y+base);
			}
			
		}
	}
	
	static class circle{
		long x,y,r;
		circle(long a,long b,long c){
			x = a;
			y = b;
			r = c;
		}
		
	}

	static class node{
		node leftnode;
		node rightnode;
		int lessthan;
		int value;
		
		node(int value){
			leftnode = null;
			rightnode = null;
			this.value = value;
			lessthan = 0;
		}
		
		public void add( int x ){
			if( x < value ){
				//send left
				lessthan++;
				if( leftnode != null){
					leftnode.add(x);
				}
				
				else{
					node temp = new node(x);
					leftnode = temp;
				}
			}
			
			else{
				//send right
				if( rightnode != null){
					rightnode.add(x);
				}
				else{
					node temp = new node(x);
					temp.lessthan = this.lessthan + 1;
					rightnode = temp;
				}
			}
		}
		
		public int lessthan( int x){
			
			if( x < value && leftnode == null) return 0;
			else if( x < value && leftnode != null ) return leftnode.lessthan(x);
			else  return this.lessthan+1;
			
		}
	}

	static class IO{


		BufferedReader reader;
		StringTokenizer tokenizer;
		PrintWriter writer;

		public void init() {
			try {
				reader = new BufferedReader(new InputStreamReader(System.in),8*1024);
				writer = new PrintWriter(System.out);
			} catch (Exception e) {
				e.printStackTrace();
				System.exit(261);
			}
		}

		void destroy() {
			writer.close();
			System.exit(0);
		}

		void print(Object... objects) {
			for (int i = 0; i < objects.length; i++) {
				if (i != 0)
					writer.print(' ');
				writer.print(objects[i]);
			}
		}

		void println(Object... objects) {
			print(objects);
			writer.println();
		}

		String nextLine() throws IOException {
			return reader.readLine();
		}

		String nextToken() throws IOException {
			while (tokenizer == null || !tokenizer.hasMoreTokens())
				tokenizer = new StringTokenizer(nextLine());
			return tokenizer.nextToken();
		}

		int nextInt() throws NumberFormatException, IOException {
			return Integer.parseInt(nextToken());
		}

		long nextLong() throws NumberFormatException, IOException {
			return Long.parseLong(nextToken());
		}

		double nextDouble() throws NumberFormatException, IOException {
			return Double.parseDouble(nextToken());
		}
	}
}