use std::io::*; use std::str::FromStr; /* const LOW_CASE_ALPHABET: [char; 26] = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', ]; */ //static fib: Vec; //use std::io::{self, BufRead}; fn main() { let s: Vec = read_array(); if s.len() != 1{ for _i in 0..s.len() - 1{ if s[_i] == s[_i + 1]{ continue; } print!("{}",s[_i]); } if s[s.len() - 2] != s[s.len() - 1]{ print!("{}",s[s.len() - 1]); } if s[s.len() - 2] == s[s.len() - 1]{ print!("{}",s[s.len() - 1]); } }else{ print!("{}",s[0]) } } /* pub fn legendre(mut n: usize, p: usize) -> usize { let mut res = 0; while n != 0 { res += n / p; n /= p; } return res; } pub fn euclid(a: usize, b: usize) -> usize { if b == 0 { return a; } else { return euclid(b, a % b); } } pub fn calc_divisors_number(n: usize) -> usize { let mut res = 0; for _i in 1..=((n as f64).sqrt() as usize) { if n % _i != 0 { continue; } if n / _i != _i { res += 2; } else { res += 1; } } return res; } pub fn calc_divisors(n: usize) -> Vec { let mut res = Vec::new(); for _i in 1..=((n as f64).sqrt() as usize) { if n % _i != 0 { continue; } res.push(_i); if n / _i != _i { res.push(n / _i); } } res.sort(); return res; } */ pub fn read() -> T { let stdin = stdin(); let stdin = stdin.lock(); let token: String = stdin .bytes() .map(|c| c.expect("failed to read char") as char) .skip_while(|c| c.is_whitespace()) .take_while(|c| !c.is_whitespace()) .collect(); token.parse().ok().expect("failed to parse token") } pub fn read_array() -> Vec { let array: String = read(); let chars: Vec = array.trim().chars().collect::>(); chars }