//整体思路:先将所有输入保存下来,然后剔除前后引号,
//并记录位置,然后合并引号之间的字符串,然后输出
#include<bits/stdc++.h>
using namespace std;
int main()
{
vector<string> v1,v2;
vector<int> vn;
string tmp1;
while(cin>>tmp1)
{
v1.push_back(tmp1);
if(cin.get()=='\n')
{
for(int i=0;i<v1.size();i++)
{
if(v1[i][0]=='"')
{
v1[i].erase(0,1);//剔除前引号,并用vn记录位置
vn.push_back(i);
}
if(v1[i][v1[i].size()-1]=='"')
{
v1[i].erase(v1[i].end()-1,v1[i].end());//剔除后引号,并用vn记录位置
vn.push_back(i);
}
}
for(int j=0;j<vn.size();j+=2)//两个位置为一组引号,所以j+=2
{
string tmp2;
for(int k=vn[j];k<vn[j+1];k++)//合并引号之间的字符串
{
tmp2+=v1[k];
tmp2+=" ";
}
tmp2+=v1[vn[j+1]];//还要加上后引号所在的字符串
v1[vn[j]]=tmp2;//将合并后的字符串赋值给前引号开始的位置,
}
if(vn.size())//这里面是为了删除引号中间多余的字符串(包括后引号所在的字符串)
{
int kk=vn.size()-1;
for(int k=kk;k>0;k-=2)
{
v1.erase(v1.begin()+vn[k-1]+1,v1.begin()+vn[k]+1);
}
}
//剩下的就是正确的命令,输出就行了
cout<<v1.size()<<endl;
for(auto x:v1)
{
cout<<x<<endl;
}
}
}
}