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 JAVA):

Solution:
import java.util.*;
import java.lang.*;
import java.math.*;
import java.io.*;

import static java.lang.Math.*;
import static java.util.Arrays.*;

public class Main{

	Scanner sc;

	static final int INF=1<<28;
	static final double EPS=1e-9;

	class P{
		double x, y;

		P(double x, double y){
			this.x=x;
			this.y=y;
		}

		double length(P p){
			return sqrt((p.x-x)*(p.x-x)+(p.y-y)*(p.y-y));
		}
	}

	void run(){
		sc=new Scanner(System.in);
		LinkedList<P> list=new LinkedList<P>();
		for(; sc.hasNext();){
			String[] s=sc.next().split(",");
			double x=Double.parseDouble(s[0]);
			double y=Double.parseDouble(s[1]);
			list.add(new P(x, y));
		}
		int n=list.size();
		P p0=list.getFirst();
		double sum=0;
		for(int i=0; i<n-2; i++){
			// i+1, i+2
			P p1=list.get(i+1);
			P p2=list.get(i+2);
			double a=p0.length(p1);
			double b=p1.length(p2);
			double c=p2.length(p0);
			double z=(a+b+c)/2;
			double s=sqrt(z*(z-a)*(z-b)*(z-c));
			sum+=s;
		}
		println(sum+"");
		sc.close();
	}

	void print(String s){
		System.out.print(s);
	}

	void println(String s){
		System.out.println(s);
	}

	public static void main(String[] args){
		new Main().run();
	}
}