/* * 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; for p0 in 0..=s { let mut dp:[usize;s_max+1] = [0;s_max+1]; dp[0] = 1; let b:usize = if s >=p0*n + n*(n-1)*k/2 { s - p0*n - n*(n-1)*k/2 } else { break; }; for i in 1..=(n-1) { for j in i..=b { dp[j] = (dp[j] + dp[j-i])%big; } } ans += dp[b]%big; } write!(out, "{}", ans%big).unwrap(); }