#include<bits/stdc++.h>usingnamespacestd;#define X first
#define Y second
intdx[4]={0,-1,0,1};intdy[4]={1,0,-1,0};vector<pair<int,int>>avail[101][101];boolvisited[101][101];boolon[101][101];intcnt=0;intn,m;voidbfs(){queue<pair<int,int>>Q;Q.push({1,1});visited[1][1]=true;on[1][1]=true;cnt++;while(!Q.empty()){autocur=Q.front();Q.pop();for(auto&room:avail[cur.X][cur.Y]){if(!on[room.X][room.Y]){on[room.X][room.Y]=true;cnt++;for(intdir=0;dir<4;dir++){intnx=room.X+dx[dir];intny=room.Y+dy[dir];if(nx<1||ny<1||nx>n||ny>n)continue;if(visited[nx][ny]){Q.push({room.X,room.Y});visited[room.X][room.Y]=true;break;}}}}for(intdir=0;dir<4;dir++){intnx=cur.X+dx[dir];intny=cur.Y+dy[dir];if(nx<1||ny<1||nx>n||ny>n)continue;if(!on[nx][ny]||visited[nx][ny])continue;Q.push({nx,ny});visited[nx][ny]=true;}}}intmain(void){ios::sync_with_stdio(false);cin.tie(nullptr);cin>>n>>m;for(inti=0;i<m;i++){intx,y,a,b;cin>>x>>y>>a>>b;avail[x][y].push_back({a,b});}bfs();cout<<cnt;return0;}