/* * Author: srtry * Created: 2025-10-12T09:51:49+09:00 * Coding: utf-8-unix */ use proconio::input; use std::io::{stdout,Write,BufWriter}; const big:usize = 1000000007; const n_max:usize = 100; const s_max:usize = 20000; const k_max:usize = 100; fn main() { input!{ n:usize, s:usize, k:usize } let out = stdout(); let mut out = BufWriter::new(out.lock()); let mut ans:usize = 0; let mut dp:[usize;s_max+1] = [0;s_max+1]; dp[0] = 1; let b:usize = if k*(n-1)*n/2 > s { write!(out, "0").unwrap(); return } else { s - k*(n-1)*n/2 }; for i in 1..=n { for j in i..=b { dp[j] = (dp[j] + dp[j-i])%big; } } write!(out, "{}", dp[b]).unwrap(); }