//适用于正负整数
// 输入
template <class T>inline bool read(T &ret)
{
char c; int sgn;
if(c = getchar(), c == EOF) return 0;
while (c != '-' && (c < '0' || c > '9')) c = getchar();
sgn = (c == '-') ? -1 : 1;
ret = (c == '-') ? 0 : (c - '0');
while(c = getchar(), c >= '0' && c <= '9') ret = ret * 10 + (c - '0');
ret *= sgn;
return 1;
}
// 输出
template <typename T> inline void write(T x) {
if (x < 0) {putchar('-'); x = -x;}
if (x > 9) write(x / 10);
putchar(x % 10 + '0');
}
// 输出行
template <typename T> inline void writeln(T x)
{
write(x);
puts("");
}