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:
//Name: Area of Polygon
//Level: 1
//Category: 幾何,やるだけ
//Note:

/*
 * 凸多角形の面積は，適当な点Oを取り，隣接する頂点の組(P,Q)すべてに対して外積 OP×OQ を足し合わせることで計算できる．
 */
#include <cstdio>
#include <complex>
#include <vector>
#include <cmath>

using namespace std;

typedef complex<double> Vector;

double cross(const Vector &v1, const Vector &v2) {
    return v1.real()*v2.imag() - v1.imag()*v2.real();
}

int main() {
    vector<Vector> v;
    double X, Y;
    while(scanf("%lf,%lf", &X, &Y) != -1) {
        v.push_back(Vector(X, Y));
    }
    const int N = v.size();
    double area = 0;
    for(int i = 0; i < N; ++i) {
        const int next = (i+1) % N;
        area += cross(v[i], v[next]);
    }
    printf("%f\n", fabs(area)/2);
    return 0;
}