#include<bits/stdtr1c++.h>
using namespace std;
inline static const nullptr_t _={ios_base::sync_with_stdio(0);cin.tie(nullptr),cout.tie(nullptr);return nullptr;}();
double distance(int x1, int y1, int x2, int y2) {return sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));}
double triangleArea(int x1, int y1, int x2, int y2, int x3, int y3) {double area = 0.5 * abs(x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2));return area;}
double totalTriangleArea(vector<pair<int, int>>& points) {int n = points.size();double totalArea = 0.0;unordered_map<int, unordered_map<int, int>> hash;for (int i = 0; i < n; i++) {hash[points[i].first][points[i].second] = i;}vector distances;for (int i = 0; i < n-1; i++) {for (int j = i + 1; j < n; j++) {int x1 = points[i].first;int y1 = points[i].second;int x2 = points[j].first;int y2 = points[j].second;double dist = distance(x1, y1, x2, y2);distances.push_back(dist);}}sort(distances.begin(), distances.end());for (int i = 0; i < n - 2; i++) {for (int j = i + 1; j < n - 1; j++) {for (int k = j + 1; k < n; k++) {int x1 = points[i].first;int y1 = points[i].second;int x2 = points[j].first;int y2 = points[j].second;int x3 = points[k].first;int y3 = points[k].second;double dist1 = distance(x1, y1, x2, y2);double dist2 = distance(x1, y1, x3, y3);double dist3 = distance(x2, y2, x3, y3);int idx1 = lower_bound(distances.begin(), distances.end(), dist1) - distances.begin();int idx2 = lower_bound(distances.begin(), distances.end(), dist2) - distances.begin();int idx3 = lower_bound(distances.begin(), distances.end(), dist3) - distances.begin();double area = triangleArea(x1, y1, x2, y2, x3, y3);totalArea += area;}}}return totalArea;}
int main() {int n;cin>>n;vector<pair<int, int>> points(n);for(int i=0;i<n;i++) cin>>points[i].first>>points[i].second;double result=totalTriangleArea(points);cout<<fixed<<setprecision(1)<<result<<'
';return 0;}