I didn't get logic for these to lines
- f |= (ch == '-')
- x = (x << 1) + (x << 3) + (ch ^ 48);
template<class T>void read(T& x)
{
x = 0; int f = 0; char ch = getchar();
while (ch < '0' || ch>'9') { f |= (ch == '-'); ch = getchar(); }
while (ch >= '0' && ch <= '9') { x = (x << 1) + (x << 3) + (ch ^ 48); ch = getchar(); }
x = f ? -x : x;
return;
}