/* 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); } }