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

ll mod = 998244353;

class BIT{
    public:
    int size;
    vector<int> tree;
    
    void set(int n){
        size = n;
        tree = vector<int>(n+1, 0);
        return;
    }
    
    void add(int n, int a) {
        int x = n;
        while (x <= size){
            tree[x] += a;
            x += (x & -x);
        }
        return;
    }
    
    int sum(int n) {
        int x = n;
        int sum = 0;
        while (x > 0) {
            sum += tree[x];
            x -= (x & -x);
        }
        return sum;
    }
    
};

int main() {
    int N;
    cin >> N;
    vector<pair<int, int>> points(N);
    vector<int> xs(N), ys(N);
    for (int i = 0; i < N; i++) {
        cin >> xs[i] >> ys[i];
        points[i] = {xs[i], ys[i]};
    }
    sort(points.begin(), points.end());
    sort(ys.begin(), ys.end());
    for (int i = 0; i < N; i++) {
        points[i].second = distance(ys.begin(), lower_bound(ys.begin(), ys.end(), points[i].second))+1;
    }
    
    BIT bit;
    bit.set(N+2);
    
    ll ans = 0;
    
    vector<ll> pow2(N+2, 1);
    for (int i = 1; i <= N; i++) pow2[i] = pow2[i-1]*2%mod;
    
    for (int i = 0; i < N; i++) {
        int y = points[i].second;
        int ss = bit.sum(y), sb = i - ss;
        int bs = y - 1 - ss, bb = N - y - (i - ss);
        ans += (pow2[ss]-1) * (pow2[bb]-1) % mod * (pow2[sb] + pow2[bs] - 1) % mod;
        ans += (pow2[sb]-1) * (pow2[bs]-1) % mod * (pow2[ss] + pow2[bb] - 1) % mod;
        ans += (pow2[sb]-1) * (pow2[bs]-1) % mod * (pow2[ss] - 1)  % mod * (pow2[bb] - 1) % mod;
        ans += pow2[N-1];
        ans %= mod;
        bit.add(y, 1);
    }
    
    cout << ans << endl;
    return 0;
}