#include<stdio.h>
#include<string.h>
#include<stdbool.h>
#include<stdlib.h>
void priA(char *arr,int i,int n)
{
int count = 1,k=n%3;
int ms = k;
if(i)
{
k = (n-1)%3;
ms = k;
}
while(k--)
{
printf("%c",arr[i++]);
}
if(ms && n>3)
{
printf(",");
}
for(;i<n;i++,count++)
{
printf("%c",arr[i]);
if(count%3 == 0 && i<n-2)
{
printf(",");
}
}
}
void jinwei(char *arr,int d,bool zf)
{
int i = zf?1:0;
if(zf == true)
{
printf("(");
}
int le = strlen(arr)-d-1;
if(le <2)
{
priA(arr,i,d);
printf("%c%c0",arr[d],arr[d+1]);
}
else if(le <3)
{
priA(arr,i,d);
printf("%c%c%c",arr[d],arr[d+1],arr[d+2]);
}
else if(le >2)
{
bool jin1 = arr[d+3] >'4'?true:false;
int stack = 0;
if(jin1)
{
int j;
for(j=d+2;j>d &&jin1;j--)
{
arr[j] += 1;
if(arr[j] > '9')
{
arr[j] = '0';
}
else
{
jin1 = 0;
}
}
for(j=d-1;j>=i &&jin1;j--)
{
arr[j] += 1;
if(arr[j] > '9')
{
arr[j] = '0';
}
else
{
jin1 = 0;
}
}
if(j+1 == i && jin1)
{
stack = 1;
}
if(stack)
{
printf("1");
if((d%3 == 0 &&zf==0) || ((d-1)%3==0 && zf))
{
printf(",");
}
priA(arr,i,d);
printf("%c%c%c",arr[d],arr[d+1],arr[d+2]);
}
else
{
priA(arr,i,d);
printf("%c%c%c",arr[d],arr[d+1],arr[d+2]);
}
}
else
{
priA(arr,i,d);
printf("%c%c%c",arr[d],arr[d+1],arr[d+2]);
}
}
if(zf == true)
{
printf(")\n");
}
else
{
printf("\n");
}
}
void zjinwei(char *arr,bool zf)
{
if(zf == true)
{
printf("(");
}
int i = zf?1:0;
int le = strlen(arr);
priA(arr,i,le);
if(zf == true)
{
printf(".00)\n");
}
else
{
printf(".00\n");
}
}
void guizheng0(char *arr,bool zf)
{
int i=0;
if(zf)
{
i=1;
while(arr[i++] == '0');
i -=2;
if(i>1)
{
if(arr[++i]=='.')
{
strcpy(arr,arr+i-1);
}
else
{
strcpy(arr,arr+i);
}
}
else if(i==1)
{
if(arr[i+1]>'0' &&arr[i+1]<='9')
{
strcpy(arr,arr+i);
}
}
}
else
{
i=0;
while(arr[i++] == '0');
i--;
if(i>1)
{
if(arr[i]=='.')
{
strcpy(arr,arr+i-1);
}
else
{
strcpy(arr,arr+i);
}
}
else if(i==1)
{
if(arr[i]>'0' &&arr[i]<='9')
{
strcpy(arr,arr+i);
}
}
}
}
void jia0(char *arr,bool zf)
{
char a[102];
memset(a,0,sizeof(a));
if(arr[0]=='.')
{
a[0] = '0';
strcat(a,arr);
memset(arr,0,sizeof(arr));
strcpy(arr,a);
}
else if(zf &&arr[1]=='.')
{
a[0]='-';
a[1]='0';
strcat(a,arr+1);
memset(arr,0,sizeof(arr));
strcpy(arr,a);
}
}
int main()
{
char arr[102] = {0};
float num;
while(~scanf("%s",arr))
{
bool zf = false;
if(arr[0] == '-')
{
zf = true;
}
guizheng0(arr,zf);
jia0(arr,zf);
num = atof(arr);
if(!num)
{
printf("0.00\n");
continue;
}
int d=strstr(arr,".")-arr;
if(d>0 && d<100)
{
jinwei(arr,d,zf);
}
else
{
zjinwei(arr,zf);
}
}
return 0;
}
#include<string.h>
#include<stdbool.h>
#include<stdlib.h>
void priA(char *arr,int i,int n)
{
int count = 1,k=n%3;
int ms = k;
if(i)
{
k = (n-1)%3;
ms = k;
}
while(k--)
{
printf("%c",arr[i++]);
}
if(ms && n>3)
{
printf(",");
}
for(;i<n;i++,count++)
{
printf("%c",arr[i]);
if(count%3 == 0 && i<n-2)
{
printf(",");
}
}
}
void jinwei(char *arr,int d,bool zf)
{
int i = zf?1:0;
if(zf == true)
{
printf("(");
}
int le = strlen(arr)-d-1;
if(le <2)
{
priA(arr,i,d);
printf("%c%c0",arr[d],arr[d+1]);
}
else if(le <3)
{
priA(arr,i,d);
printf("%c%c%c",arr[d],arr[d+1],arr[d+2]);
}
else if(le >2)
{
bool jin1 = arr[d+3] >'4'?true:false;
int stack = 0;
if(jin1)
{
int j;
for(j=d+2;j>d &&jin1;j--)
{
arr[j] += 1;
if(arr[j] > '9')
{
arr[j] = '0';
}
else
{
jin1 = 0;
}
}
for(j=d-1;j>=i &&jin1;j--)
{
arr[j] += 1;
if(arr[j] > '9')
{
arr[j] = '0';
}
else
{
jin1 = 0;
}
}
if(j+1 == i && jin1)
{
stack = 1;
}
if(stack)
{
printf("1");
if((d%3 == 0 &&zf==0) || ((d-1)%3==0 && zf))
{
printf(",");
}
priA(arr,i,d);
printf("%c%c%c",arr[d],arr[d+1],arr[d+2]);
}
else
{
priA(arr,i,d);
printf("%c%c%c",arr[d],arr[d+1],arr[d+2]);
}
}
else
{
priA(arr,i,d);
printf("%c%c%c",arr[d],arr[d+1],arr[d+2]);
}
}
if(zf == true)
{
printf(")\n");
}
else
{
printf("\n");
}
}
void zjinwei(char *arr,bool zf)
{
if(zf == true)
{
printf("(");
}
int i = zf?1:0;
int le = strlen(arr);
priA(arr,i,le);
if(zf == true)
{
printf(".00)\n");
}
else
{
printf(".00\n");
}
}
void guizheng0(char *arr,bool zf)
{
int i=0;
if(zf)
{
i=1;
while(arr[i++] == '0');
i -=2;
if(i>1)
{
if(arr[++i]=='.')
{
strcpy(arr,arr+i-1);
}
else
{
strcpy(arr,arr+i);
}
}
else if(i==1)
{
if(arr[i+1]>'0' &&arr[i+1]<='9')
{
strcpy(arr,arr+i);
}
}
}
else
{
i=0;
while(arr[i++] == '0');
i--;
if(i>1)
{
if(arr[i]=='.')
{
strcpy(arr,arr+i-1);
}
else
{
strcpy(arr,arr+i);
}
}
else if(i==1)
{
if(arr[i]>'0' &&arr[i]<='9')
{
strcpy(arr,arr+i);
}
}
}
}
void jia0(char *arr,bool zf)
{
char a[102];
memset(a,0,sizeof(a));
if(arr[0]=='.')
{
a[0] = '0';
strcat(a,arr);
memset(arr,0,sizeof(arr));
strcpy(arr,a);
}
else if(zf &&arr[1]=='.')
{
a[0]='-';
a[1]='0';
strcat(a,arr+1);
memset(arr,0,sizeof(arr));
strcpy(arr,a);
}
}
int main()
{
char arr[102] = {0};
float num;
while(~scanf("%s",arr))
{
bool zf = false;
if(arr[0] == '-')
{
zf = true;
}
guizheng0(arr,zf);
jia0(arr,zf);
num = atof(arr);
if(!num)
{
printf("0.00\n");
continue;
}
int d=strstr(arr,".")-arr;
if(d>0 && d<100)
{
jinwei(arr,d,zf);
}
else
{
zjinwei(arr,zf);
}
}
return 0;
}