
#include <bits/stdc++.h>
#include <numeric>
using namespace std ;
#define ll long long int
#define ull unsigned long long int
#define s(a) scanf("%lld",&a)
#define S(a) scanf("%ull",&a)
#define For(i,n) for(i=0;i<n;i++)
#define FOR(i,n) for(i=1;i<=n;i++)
#define pie acos(-1.0)
//#define cin std::cin
//#define cout std::cout
ll test, flag,R ,gcd_,temp,temp1,G,B,a,b, n,i,p,q,sum,S,l,r, m,Y,z,XD,j,j_1,k,k1,res ,min_ ,flag1,max_,XD1,count_,s_size ;
char ch ,ch_1 ;
string s,s3;
//char s[100010] ;
char c2[520][520];
ll pl,x,y,mi,c,d, u,v ,ans,ans1;
char garbage,garbage1 ;
struct vox{
   ll a;
   ll index ;
   ll b ;
} ;
bool comp(vox x, vox y) {
   return x.a < y.a ;
} 
bool com(vox x, vox y) {
   return x.index < y.index ;
} 
ll lcm(ull a, ull b)
{
    return (a / __gcd(a, b)) * b;
}
int main()
{
          //ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
          
            scanf("%lld",&n) ;
            ll arr[100001] ;
            set<ll>s ;
            sum = 0 ;
            for(i=0;i<n;i++) {
              scanf("%lld",&x) ;
              scanf("%lld",&y) ;
              x--;
              sum = sum + (y*(y+1))/2 - (x*(x+1))/2 ;
            }
            printf("%lld\n",sum);
            return 0;
           }
#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (n); ++i)
using ll = long long;
using P = pair<int,int>;

using Graph = vector<vector<int>>;

// 深さ優先探索
vector<bool> seen;
void dfs(const Graph &G, int v) {
    seen[v] = true; // v を訪問済にする

    // v から行ける各頂点 next_v について
    for (auto next_v : G[v]) { 
        if (seen[next_v]) continue; // next_v が探索済だったらスルー
        dfs(G, next_v); // 再帰的に探索
    }
}


int main(void)
{
    int N, M;
    cin >> N >> M;

    Graph G(N);
    for (int i = 0; i < M; ++i) {
        int a, b;
        cin >> a >> b;
        --a;
        --b;

        G[a].push_back(b);
    }

    // 頂点 0 をスタートとした探索
    ll ans = 0;
    rep(i, N)
    {
        seen.assign(N, false); // 全頂点を「未訪問」に初期化
        dfs(G, i);
        int tmp = 0;
        rep(i, N)
        {
            if(seen[i]) ++tmp;
        }
        ans += tmp;
    }
    cout << ans << endl;


    return 0;
}
