Problem: Write a program that reads the coordinates of the vertices of a convex n-sided polygon (a polygon whose internal angles are less than 180 degrees, that is, a polygon that is not dented) and outputs its area. The vertices are named Vertex 1, Vertex 2, Vertex 3, ... Vertex n according to the order of edge connections.

However, n is 3 or more and 20 or less. You can also use the following formula to find the area S from the lengths a, b, and c of the three sides of the triangle.

<image>



input

The input is given in the following format:


x1, y1
x2, y2
::
xn, yn


xi and yi are real numbers that represent the x and y coordinates of vertex i, respectively.

output

Outputs the area S (real number) on one line. The output can contain an error of 0.000001 or less.

Example

Input

0.0,0.0
0.0,1.0
1.0,1.0
2.0,0.0
1.0,-1.0


Output

2.500000

Solution (in CPP):

Solution:
#include <iostream>
#include <cstdio>
#include <cmath>

int main() {
	double cx[20], cy[20];
	int i;
	double a, b, c, z;
	double S;
	char dummy;
	
	i=0;
	while( std::cin >> cx[i] >> dummy >> cy[i] ) i++;

	S = 0.0;
	for( int j=1; j<i-1; j++) {
		a = sqrt( (cx[0]-cx[j])*(cx[0]-cx[j]) + (cy[0]-cy[j])*(cy[0]-cy[j]) );
		b = sqrt( (cx[0]-cx[j+1])*(cx[0]-cx[j+1]) + (cy[0]-cy[j+1])*(cy[0]-cy[j+1]) );
		c = sqrt( (cx[j]-cx[j+1])*(cx[j]-cx[j+1]) + (cy[j]-cy[j+1])*(cy[j]-cy[j+1]) );
		z = ( a + b + c ) / 2.0;

		S += sqrt( z*(z-a)*(z-b)*(z-c) );
	}
	
	if(S<0.000000) S*=-1.0;
	
	std::printf("%.6f", S);
	return 0;
}