Problem:
Score : 200 points

Problem Statement

It is only six months until Christmas, and AtCoDeer the reindeer is now planning his travel to deliver gifts.

There are N houses along TopCoDeer street. The i-th house is located at coordinate a_i. He has decided to deliver gifts to all these houses.

Find the minimum distance to be traveled when AtCoDeer can start and end his travel at any positions.

Constraints

1 ≤ N ≤ 100

0 ≤ a_i ≤ 1000

a_i is an integer.

Input

Input is given from Standard Input in the following format:

N
a_1 a_2 ... a_N

Output

Print the minimum distance to be traveled.

Sample Input 1

4
2 3 7 9

Sample Output 1

7

The travel distance of 7 can be achieved by starting at coordinate 9 and traveling straight to coordinate 2.

It is not possible to do with a travel distance of less than 7, and thus 7 is the minimum distance to be traveled.

Sample Input 2

8
3 1 4 1 5 9 2 6

Sample Output 2

8

There may be more than one house at a position.

Solution in Rust (1.15.1) (judge verdict: Accepted)

use std::io::*;

struct Stdio {
    sin : Stdin,
    sout : Stdout,
    buf : Vec<String>,
    len : usize,
    cnt : usize,
}

#[allow(dead_code)]
impl Stdio {
    fn new() -> Stdio  {
        Stdio {
            len : 0,
            cnt : 0,
            sin : stdin(),
            sout : stdout(),
            buf : Vec::new(),
        }
    }
    
    fn read_line(&mut self) {
        let mut s = String::new();
        let mut loc = self.sin.lock();
        loc.read_line(&mut s).unwrap();
        self.buf = s.trim().split_whitespace().map(|s| s.to_string()).collect();
        self.len = self.buf.len();
        self.cnt = 0;
    }
    
    fn read_next(&mut self) ->&str {
        if self.len == self.cnt {
            self.read_line();
        }
        let ret = &self.buf[self.cnt];
        self.cnt += 1;
        ret
    }
    
    fn read_num<T: std::str::FromStr>(&mut self) -> T {
        self.read_next().parse::<T>().ok().unwrap()
    }

    fn read_string(&mut self) -> &str {
        self.read_next().clone()
    }
    
}

fn main() {
    let mut stdio = Stdio::new();
    let n = stdio.read_num::<usize>();
    let mut a = vec![0;n];
    for i in &mut a {
        *i = stdio.read_num::<i32>();
    }
    let max = a.iter().max().unwrap();
    let min = a.iter().min().unwrap();
    writeln!(stdio.sout, "{}" , max-min).unwrap();

}