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,
}

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_i32(&mut self) -> i32 {
        if self.len == self.cnt {
            self.read_line();
        }
        let ret = self.buf[self.cnt].parse::<i32>().ok().unwrap();
        self.cnt += 1;
        ret
    }

    fn read_string(&mut self) -> String {
        if self.len == self.cnt {
            self.read_line();
        }
        let ret = self.buf[self.cnt].clone();
        self.cnt += 1;
        ret
    }
    fn write(&mut self , s : &str) {
        write!(self.sout ,"{}" ,s).unwrap();
    }
}

fn main() {
    let mut stdio = Stdio::new();
    let n :usize = stdio.read_i32() as usize;
    let mut a = vec![0;n];
    for i in 0..n {
        a[i] = stdio.read_i32();
    }
    let max = a.iter().max().unwrap();
    let min = a.iter().min().unwrap();
    stdio.write(&(max-min).to_string());


}