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

typedef long long ll;
typedef vector<ll> vl;
typedef vector<vl> vvl;
typedef pair<ll,ll> pll;
typedef vector<bool> vb;
const ll oo = 0x3f3f3f3f3f3f3f3f;
const double eps = 1e-9;
#define sz(c) ll((c).size())
#define all(c) begin(c), end(c)
#define FOR(i,a,b) for (ll i = (a); i < (b); i++)
#define FORD(i,a,b) for (ll i = (b)-1; i >= (a); i--)
#define mp make_pair
#define pb push_back
#define eb emplace_back
#define xx first
#define yy second
#define TR(X) ({ if(1) cerr << "TR: " << (#X) << " = " << (X) << endl; })

struct bit {
	ll n;
	vl a;

	bit(ll n): n(n), a(n+2) { }
	
	void add(ll i, ll v) {
		for (i++; i <= n+1; i += i & -i) a[i] += v;
	}
	
	ll get(ll i) {
		ll res = 0;
		for (; i; i -= i & -i) res += a[i];
		return res;
	}
};

const ll MOD = 998244353;

void compress(vl &x) {
	vl i2x = x;
	sort(all(i2x));
	map<ll,ll> x2i;
	FOR(i,0,sz(x)) x2i[i2x[i]] = i;
	FOR(i,0,sz(x)) x[i] = x2i[x[i]];
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	
	ll n; cin >> n;
	vl x(n), y(n);
	FOR(i,0,n) cin >> x[i] >> y[i];
	compress(x), compress(y);
	
	vl p2(n+1);
	p2[0] = 1;
	FOR(k,1,n+1) p2[k] = 2*p2[k-1] % MOD;

	ll res = n * (p2[n]-1) % MOD;
	FOR(i,0,n) res = (res - 4*(p2[i]-1)) % MOD;
	FOR(flip,0,2) {
		vl is(n);
		iota(all(is),0);
		sort(all(is),[&](ll i, ll j) { return x[i] < x[j]; });
		FOR(rot,0,2) {
			bit B(n);
			for (ll i: is) {
				ll cnt = B.get(y[i]);
				res = (res + p2[cnt]-1) % MOD;
				B.add(y[i],1);
			}
			reverse(all(is));
		}
		FOR(i,0,n) y[i] = n-1-y[i];
	}
	
	if (res < 0) res += MOD;
	cout << res << endl;
}

