#include <stdio.h>
#include <list>
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <sstream>

using namespace std;

enum Direction {
    UP,
    DOWN
};

int main(){
    string line;
    int safeReports = 0;
    stringstream wholeDoc;

    ifstream puzzle("input.txt", ifstream::in);

        while (getline(puzzle, line)) {
            istringstream lineStream(line);
            string numberString;
            list<int> currentLevels;
            while (getline(lineStream, numberString, ' ')) {
                int number = stoi(numberString);
                currentLevels.push_back(number);
            }

            int numOfLevelsInLine = currentLevels.size();
            int numOfLevelsProcessed = 0;

            //need to pull the first one to have something to compare to
            enum Direction dir;
            int prevlevel = currentLevels.front();
            currentLevels.pop_front();
            numOfLevelsProcessed++;
            if (prevlevel < currentLevels.front()){
                dir = DOWN;
            } else if (prevlevel > currentLevels.front()){
                dir = UP;
            } else {
                currentLevels.clear();
            }


            for (int level = currentLevels.front(); !currentLevels.empty();level=currentLevels.front()){
                if (abs(prevlevel-level)>3) {currentLevels.clear();break;}
                if(prevlevel==level){ currentLevels.clear();break;}
                if(dir==UP&&(prevlevel<currentLevels.front())) {currentLevels.clear();break;}
                if(dir==DOWN&&(prevlevel>currentLevels.front())) {currentLevels.clear();break;}
                
                prevlevel=currentLevels.front();
                currentLevels.pop_front();
                numOfLevelsProcessed++;

                if(numOfLevelsProcessed==numOfLevelsInLine){
                    safeReports++;
                }
            }
        }
cout << safeReports;
puzzle.close();
}