void findNum(string str, vector<int> &v){
vector<char> vch;
int p = 0, q = 0;
while (str[q] != '\0'){
if (!(str[q] - '0'<= 9 && str[q] - '0'>=0))
{
vch.push_back(str[q]);
}
q++;
}
q=0;
while (str[q] != '\0')
{
vector<char>::iterator result = find( vch.begin( ), vch.end( ), str[q] );
if (result != vch.end())
{
if (q>p)
{
string temp = str.substr(p,q-p);
int temp_v = atoi(temp.c_str());
if (str[p-1] == '-')
{
temp_v *=-1;
}
p=q+1;
v.push_back(temp_v);
}
else
{
p++;
}
}
q++;
}
if (q>p)
{
string temp = str.substr(p,q-p);
int temp_v = atoi(temp.c_str());
if (str[p-1] == '-')
{
temp_v *=-1;
}
v.push_back(temp_v);
}
}
void findNum(string str, vector<float> &v){
vector<char> vch;
int k = 0;
int flag=false;
int p = 0, q = 0;
while (str[q] != '\0'){
if (!(str[q] - '0'<= 9 && str[q] - '0'>=0))
{
vch.push_back(str[q]);
}
q++;
}
q=0;
while (str[q] != '\0')
{
vector<char>::iterator result = find( vch.begin( ), vch.end( ), str[q] );
if (result != vch.end())
{
if (str[q] == '.')
{
if (q==0)
{
p=q+1;
}
else{
if ((str[q-1] - '0'<= 9 && str[q-1] - '0'>=0) && (str[q+1] - '0'<= 9 && str[q+1] - '0'>=0))
{
k = q;
if (flag)
{
if (q>p)
{
if (k>p)
{
string temp_int = str.substr(p,k-p);
string temp_float = str.substr(k+1,q-k);
int temp_int1 = atoi(temp_int.c_str());
int temp_float1 = atoi(temp_float.c_str());
float temp_float2 = 1;
for (int i = 0; i < q-k-1; i++)
{
temp_float2 *=0.1;
}
float temp_v = temp_int1 + temp_float1 * temp_float2;
if (str[p-1] == '-')
{
temp_v *= -1;
}
p=q+1;
v.push_back(temp_v);
}
else
{
string temp_int = str.substr(p,q-p);
int temp_int1 = atoi(temp_int.c_str());
if (str[p-1] == '-')
{
temp_int1 *= -1;
}
p=q+1;
v.push_back(temp_int1);
}
flag=false;
}
else
{
p++;
}
}
flag = true;
}
else
{
p=q+1;
}
}
}
else
{
if (q>p)
{
if (k>p)
{
string temp_int = str.substr(p,k-p);
string temp_float = str.substr(k+1,q-k);
int temp_int1 = atoi(temp_int.c_str());
int temp_float1 = atoi(temp_float.c_str());
float temp_float2 = 1;
for (int i = 0; i < q-k-1; i++)
{
temp_float2 *=0.1;
}
float temp_v = temp_int1 + temp_float1 * temp_float2;
if (str[p-1] == '-')
{
temp_v *= -1;
}
p=q+1;
v.push_back(temp_v);
}
else
{
string temp_int = str.substr(p,q-p);
int temp_int1 = atoi(temp_int.c_str());
if (str[p-1] == '-')
{
temp_int1 *= -1;
}
p=q+1;
v.push_back(temp_int1);
}
flag=false;
}
else
{
p++;
}
}
}
q++;
}
if (q>p)
{
if (k>p)
{
string temp_int = str.substr(p,k-p);
string temp_float = str.substr(k+1,q-k);
int temp_int1 = atoi(temp_int.c_str());
int temp_float1 = atoi(temp_float.c_str());
float temp_float2 = 1;
for (int i = 0; i < q-k-1; i++)
{
temp_float2 *=0.1;
}
float temp_v = temp_int1 + temp_float1 * temp_float2;
if (str[p-1] == '-')
{
temp_v *= -1;
}
p=q+1;
v.push_back(temp_v);
}
else
{
string temp_int = str.substr(p,q-p);
int temp_int1 = atoi(temp_int.c_str());
if (str[p-1] == '-')
{
temp_int1 *= -1;
}
p=q+1;
v.push_back(temp_int1);
}
flag=false;
}
}
void findNum(string str, vector<string> &v){
vector<char> vch;
int k;
int flag=false;
int p = 0, q = 0;
while (str[q] != '\0'){
if (!(str[q] - '0'<= 9 && str[q] - '0'>=0))
{
vch.push_back(str[q]);
}
q++;
}
q=0;
while (str[q] != '\0')
{
vector<char>::iterator result = find( vch.begin( ), vch.end( ), str[q] );
if (result != vch.end())
{
if (str[q] == '.')
{
if (q==0)
{
p=q+1;
}
else{
if ((str[q-1] - '0'<= 9 && str[q-1] - '0'>=0) && (str[q+1] - '0'<= 9 && str[q+1] - '0'>=0))
{
k = q;
if (flag)
{
if (q>p)
{
string temp = str.substr(p,q-p);
if (str[p-1] == '-')
{
temp = '-' + temp;
}
p=q+1;
v.push_back(temp);
flag=false;
}
else
{
p++;
}
}
flag = true;
}
else
{
p=q+1;
}
}
}
else
{
if (q>p)
{
string temp = str.substr(p,q-p);
if (str[p-1] == '-')
{
temp = '-' + temp;
}
p=q+1;
v.push_back(temp);
flag=false;
}
else
{
p++;
}
}
}
q++;
}
if (q>p)
{
string temp = str.substr(p,q-p);
if (str[p-1] == '-')
{
temp = '-' + temp;
}
p=q+1;
v.push_back(temp);
flag=false;
}
}
int main()
{
string str;
vector<int> v1;
vector<float> v2;
vector<string> v3;
getline(cin,str);
findNum(str,v1);
findNum(str,v2);
findNum(str,v3);
return 0;
}