/**
  Let a simple polygon (i.e. without self intersection, not necessarily convex) be given. It is required to calculate its area given its vertices.
  Time : O (n)
**/


#include <bits/stdc++.h>
using namespace std;

using ftype = double;


//..method 1- using signed area of triangles
struct point2d {
    ftype x, y;
    point2d() {}
    point2d(ftype x, ftype y): x(x), y(y) {}
    point2d& operator+=(const point2d &t) {
        x += t.x;
        y += t.y;
        return *this;
    }
    point2d& operator-=(const point2d &t) {
        x -= t.x;
        y -= t.y;
        return *this;
    }
    point2d& operator*=(ftype t) {
        x *= t;
        y *= t;
        return *this;
    }
    point2d& operator/=(ftype t) {
        x /= t;
        y /= t;
        return *this;
    }
    point2d operator+(const point2d &t) const {
        return point2d(*this) += t;
    }
    point2d operator-(const point2d &t) const {
        return point2d(*this) -= t;
    }
    point2d operator*(ftype t) const {
        return point2d(*this) *= t;
    }
    point2d operator/(ftype t) const {
        return point2d(*this) /= t;
    }
};
point2d operator*(ftype a, point2d b) {
    return b * a;
}

//2 d cross product
ftype cross(point2d a, point2d b) {
  return a.x * b.y - a.y * b.x;
}

//..using signed area
int signed_area_parallelogram(point2d p1, point2d p2, point2d p3) {
  return cross(p2 - p1, p3 - p2);
}


//..method 2 : we go through all edges and add trapezoid areas bounded by each edge and x-axis.
double area(const vector<point2d>& fig) {
  double res = 0;
  for (unsigned i = 0; i < fig.size(); i++) {
    point2d p = i ? fig[i - 1] : fig.back();
    point2d q = fig[i];
    res += (p.x - q.x) * (p.y + q.y);
  }
  return fabs(res) / 2;
}

int main() {
  cout << fixed;
  cout << setprecision(1);
  int n;
  cin >> n;
  int x, y;
  vector <point2d> fig;
  for (int i = 0; i < n; i++) {
      cin >> x >> y;
      point2d point(x, y);
      fig.push_back(point);
  }
  reverse(fig.begin(), fig.end());
  double ans = area(fig);
  cout << ans << endl;
  return 0;
} 
