namespace IO {
char buf[1<<21],*p1=buf,*p2=buf;
#ifdef LOCAL
#define gc() getchar()
#else
#define gc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
#endif
template<typename T>void read(T &x){x=0;int f(1);char c(gc());for(;!isdigit(c);c=gc())if(c=='-')f=-1;
for(;isdigit(c);c=gc())x=(x<<1)+(x<<3)+(c^48);x*=f;}
template <typename T,typename... Args>void read(T &x,Args &...y){read(x);read(y...);}
void write(char s[]){int n(strlen(s));fo(i,0,n)putchar(s[i]);}
template<typename T>void write(T x){x<0?x=-x,putchar('-'):0;static short stk[50],t(0);
do stk[++t]=x%10,x/=10;while(x);while(t) putchar(stk[t--]|48);}
void write(char c){putchar(c);}
template<class T,class ...Args>void write(T x,Args...y){write(x),write(y...);}
}
如何让以上这段块写输出字符串,例如write(x,"something",y,'\n');