/* package whatever; // don't place package name! */

import java.util.; import java.lang.; import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */ class Q1 { static int mod = (int)(1e9) + 7; static ArrayList f = new ArrayList<>(); static ArrayList f2 = new ArrayList<>(); static int countDer(int n) { // Create an array to store // counts for subproblems // Base cases f.add(1l); f.add(0l); f.add(1l); // Fill der[0..n] in bottom up
// manner using above recursive // formula for (int i = 3; i <= n; ++i) { long t = ((i - 1) * (f.get(i-1) +
f.get(i-2))%mod) % mod;

        f.add(t); 
    }
    // Return result for n 
    return 0; 
}  
static int binomialCoeff(int n, int k) 
{ 
    f2.add(1l);
    for(int i = 1;i<=n;i++) {
        f2.add(0l);
    }
    for (int i = 1; i <= n; i++) 
    { 
        // Compute next row of pascal  
        // triangle using the previous row 
        for (int j = Math.min(i, k); j > 0; j--) {
            f2.set(j, (f2.get(j)+f2.get(j-1))%mod); 
        }
        System.out.println(i+" "+f2.get(i));
    } 
    return 0; 
} 
public static void main (String[] args) throws java.lang.Exception
{
    // your code goes here
    int a = 123456, b = 654321;
    countDer(b);
    int n = b-a;
    long ans = f.get(0);
    long temp = 1l;
    for(int i = 1;i<=n;i++) {
        temp = (temp*(n-i+1))%mod;
        temp /= i;
        ans += (temp*f.get(b-i))%mod;
    }

// binomialCoeff(n,n); // System.out.println(f2); System.out.println(ans%mod); } }