← Home
package main

import (
	. "fmt"
	"io"
	"os"
	"slices"
)

func cf1174E(in io.Reader, out io.Writer) {
	const mod = 1_000_000_007
	var n, ans int
	Fscan(in, &n)

	f := func(a []int) {
		res, fac := 1, 1
		for i, v := range a[:len(a)-1] {
			c := n/v - n/a[i+1]
			res = res * c % mod
			for range c - 1 {
				res = res * fac % mod
				fac++
			}
			fac++
		}
		ans += res
	}

	a := []int{}
	for v := 1; v <= n; v *= 2 {
		a = append(a, v)
	}
	f(a)

	m := len(a)
	if a[m-1]/2*3 <= n {
		for i := 1; i < m; i++ {
			b := slices.Clone(a)
			for j := i; j < m; j++ {
				b[j] = b[j] / 2 * 3
			}
			f(b)
		}
	}

	Fprint(out, ans%mod)
}

func main() { cf1174E(os.Stdin, os.Stdout) }