fn main() { let stdin = std::io::read_to_string(std::io::stdin()).unwrap(); let mut stdin = stdin.split_ascii_whitespace(); let n: usize = stdin.next().unwrap().parse().unwrap(); let m: u32 = stdin.next().unwrap().parse().unwrap(); let c: Vec = (0..n) .map(|_| stdin.next().unwrap().parse().unwrap()) .collect(); use std::io::Write; std::io::stdout() .write_all(output(solve(m, c)).as_bytes()) .unwrap(); } fn solve(m: u32, mut c: Vec) -> usize { c.sort_unstable(); let c = c; let mut sum = 0; c.into_iter() .take_while(|&c| { sum += c; sum <= m }) .count() } fn output(ans: usize) -> String { ans.to_string() + "\n" }