func_code_string: #include <bits/stdc++.h>   using namespace std;   inline long long read() {     long long s = 0, w = 1;     char ch = getchar();     for (; !isdigit(ch); ch = getchar())       if (ch ==  - ) w = -1;     for (; isdigit(ch); ch = getchar()) s = (s << 1) + (s << 3) + (ch ^ 48);     return s * w;   }   inline void print(long long x, int op = 10) {     if (!x) {       putchar( 0 );       if (op) putchar(op);       return;     }     char F[40];     long long tmp = x > 0 ? x : -x;     if (x < 0) putchar( - );     int cnt = 0;     while (tmp > 0) {       F[cnt++] = tmp % 10 +  0 ;       tmp /= 10;     }     while (cnt > 0) putchar(F[--cnt]);     if (op) putchar(op);   }   inline long long gcd(long long x, long long y) { return y ? gcd(y, x % y) : x; }   long long qpow(long long a, long long b) {     long long ans = 1;     while (b) {       if (b & 1) ans *= a;       b >>= 1;       a *= a;     }     return ans;   }   long long qpow(long long a, long long b, long long mod) {     long long ans = 1;     while (b) {       if (b & 1) (ans *= a) %= mod;       b >>= 1;       (a *= a) %= mod;     }     return ans % mod;   }   const int dir[][2] = {{0, 1}, {1, 0},  {0, -1}, {-1, 0},                         {1, 1}, {1, -1}, {-1, 1}, {-1, -1}};   const int MOD = 1e9 + 7;   const int INF = 0x3f3f3f3f;   const int N = 1e6 + 7;   long long n, m;   struct Node {     long long x, y;     int id;     bool operator<(const Node& opt) const { return x - y < opt.x - opt.y; }   } p[N];   long long pre[N], suf[N];   long long ans[N];   int pos[N];   void solve() {     n = read(), m = read();     for (int i = 1; i <= n; ++i) {       p[i].x = read(), p[i].y = read();       p[i].id = i;     }     sort(p + 1, p + 1 + n);     for (int i = 1; i <= n; ++i) pos[p[i].id] = i;     for (int i = 1; i <= n; ++i) pre[i] = pre[i - 1] + p[i].x;     for (int i = n; i >= 1; --i) suf[i] = suf[i + 1] + p[i].y;     for (int i = 1; i <= n; ++i) {       int id = p[i].id;       long long tmp =           p[i].x * (n - i) + p[i].y * (i - 1) + pre[i - 1] + suf[i + 1];       ans[id] = tmp;     }     while (m--) {       int u = read(), v = read();       long long tmp = min(p[pos[u]].x + p[pos[v]].y, p[pos[u]].y + p[pos[v]].x);       ans[u] -= tmp;       ans[v] -= tmp;     }     for (int i = 1; i <= n; ++i) printf( %lld%c , ans[i],    n [i == n]);   }   int main() {     solve();     return 0;   }   