// write basic types: int, long long, double , and string
int read(int& a) { return scanf("%d",&a);}
int read(long long& a) { return scanf("%lld",&a);}
int read(char&c){ return (c = getchar()), 1; }
int read(double& a) { return scanf("%lf",&a);}
int read(char s[], int n){ return fgets(s, n, stdin) != 0;}
template<size_t n> int read(char (&s)[n]){ return read((char*)s, n);}
int read(string&s){int c ; while((c = getchar()) != '\n' && c != EOF)s+=(char)c; return 1;}
// now generalize for all situations, C++11 variadic template helps us.
template<typename ... T>
int read(T& ... a)
{
using shadow = int[];
shadow sh = {read(a) ...};
return sizeof(sh)/sizeof(sh[0]);
}
//usage:
int main(){
int a,b,c,d,e;
read(a,b,c,d,e);
printf("max is : %d\n", max({a,b,c,d,e});
return 0;
}