A positive integer is called a 2-3-integer, if it is equal to 2x·3y for some non-negative integers x and y. In other words, these integers are such integers that only have 2 and 3 among their prime divisors. For example, integers 1, 6, 9, 16 and 108 — are 2-3 integers, while 5, 10, 21 and 120 are not.

Print the number of 2-3-integers on the given segment [l, r], i. e. the number of sich 2-3-integers t that l ≤ t ≤ r.

Input

The only line contains two integers l and r (1 ≤ l ≤ r ≤ 2·109).

Output

Print a single integer the number of 2-3-integers on the segment [l, r].

Examples

Input

1 10


Output

7


Input

100 200


Output

5


Input

1 2000000000


Output

326

Note

In the first example the 2-3-integers are 1, 2, 3, 4, 6, 8 and 9.

In the second example the 2-3-integers are 108, 128, 144, 162 and 192.
import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Vector;
import java.util.StringTokenizer;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.InputStream;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 *
 * @author Tarek
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        InputReader in = new InputReader(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        A23Numbers solver = new A23Numbers();
        solver.solve(1, in, out);
        out.close();
    }

    static class A23Numbers {
        public void solve(int testNumber, InputReader in, PrintWriter out) {
            int l = in.nextInt();
            int r = in.nextInt();
            int ans = 0;
            if (l == 1) ans++;
            out.println(calc(l, r) + ans);
        }

        public static int calc(int l, int r) {
            Vector<Long> power2 = new Vector<Long>();
            Vector<Long> power3 = new Vector<Long>();
            long mul2 = 1;
            while (mul2 <= r) {
                power2.add(mul2);
                mul2 *= 2;
            }
            long mul3 = 1;
            while (mul3 <= r) {
                power3.add(mul3);
                mul3 *= 3;
            }
            Vector<Long> power23 = new Vector<Long>();
            for (int x = 0; x < power2.size(); x++) {
                for (int y = 0; y < power3.size(); y++) {
                    long mul = power2.get(x) * power3.get(y);
                    if (mul == 1) continue;
                    if (mul <= r) power23.add(mul);
                }
            }
            int ans = 0;
            for (long x : power23) {
                if (x >= l && x <= r) {
                    ans++;
                }
            }
            return ans;
        }

    }

    static class InputReader {
        public BufferedReader reader;
        public StringTokenizer tokenizer;

        public InputReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream), 32768);
            tokenizer = null;
        }

        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }

    }
}

