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 <vector>
#include <algorithm>
#include <math.h>
using namespace std;
typedef long long int ll;

double s(double z,double a,double b,double c){
	return sqrt(z*(z-a)*(z-b)*(z-c));
}

double dist(double a,double b,double c,double d){
	return sqrt((a-c)*(a-c)+(b-d)*(b-d));
}

int main(){
	cin.tie(nullptr);
	ios::sync_with_stdio(false);
	vector<double> x,y;
	double p,q;
	char cc;
	while(cin >> p >> cc >> q){
		x.push_back(p);
		y.push_back(q);
	}
	int n=x.size();
	double ans=0.0;
	for(int i=1;i<n-1;i++){
		double a=dist(x[i],y[i],x[i+1],y[i+1]);
		double b=dist(x[i+1],y[i+1],x[0],y[0]);
		double c=dist(x[i],y[i],x[0],y[0]);
		double z=(a+b+c)/2.0;
		ans+=s(z,a,b,c);
	}
	printf("%.8f\n",ans);
}