Trong một kỳ thi Olympic Tin học đồng đội có \(n\) Đội học sinh tham gia. Ban Tổ chức bố trí mỗi đội làm việc trong một lều riêng biệt. Các đội và các lều được đánh số từ \(1\) đến \(n\). Ngày đầu tiên thử nghiệm làm quen với hệ thống chấm điểm tự động, Đội thứ \(i\) được phân vào làm việc ở lều thứ \(i\). Ở buổi thi chính thức, các đội tiến hành bốc thăm xác định lều mình sẽ làm việc. Dĩ nhiên, việc bốc thăm cũng được tin học hoá: Trước sự chứng kiến của các Đội trưởng, Ban Tổ chức kích hoạt chương trình tạo một hoán vị \(P=(p_1,p_2,...,p_n)\) các số từ \(1\) đến \(n\). Hoán vị \(P\) được hiển thị công khai trên màn hình lớn trong hội trường và các đội theo đó đi vào lều của mình – đội \(i\) sẽ vào lều \(p_i\). Không ai nghi ngờ về tính trung thực và khách quan của kết quả bốc thăm. Nhưng tâm lý chung ai cũng thầm mong ước may mắn được về lại chính lều nơi ban đầu mình thử nghiệm hệ thống.
Yêu cầu : Hãy xác định trong số \(n!\) khả năng xuất hiện \(P\) có bao nhiêu khả năng có đúng \(k\) đội may mắn.
Input
- Gồm một dòng chứa 2 số nguyên \(n\) và \(k\), các số cách nhau ít nhất một dấu cách \((1 \leq n \leq 10^5,0 \leq k \leq n).\)
Output
- Đưa ra một số nguyên là kết quả tìm được lấy số dư cho \(10^9+7\).
Scoring
- Subtask \(1\) (\(50\%\) số điểm): \(n \leq 10\).
- Subtask \(2\) (\(50\%\) số điểm): không có điều kiện gì thêm
Example
Test 1
Input
4 2
Output
6
Bình luận