#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
long long crossProd_L( long long x1, long long y1, long long x2, long long y2) {
return x1 * y2 - x2 * y1;
}
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
int N;
int X[ 1000 ] ;
int Y[ 1000 ] ;
class Solution{
public :
bool checkStraightLine( vector< vector< int >> & in) {
int i;
N = in.size ( ) ;
for ( i= ( 0 ) ; i< ( N) ; i++ ) {
X[ i] = in[ i] [ 0 ] ;
Y[ i] = in[ i] [ 1 ] ;
}
for ( i= ( 1 ) ; i< ( N) ; i++ ) {
X[ i] - = X[ 0 ] ;
Y[ i] - = Y[ 0 ] ;
}
for ( i= ( 2 ) ; i< ( N) ; i++ ) {
if ( crossProd_L( X[ 1 ] ,Y[ 1 ] ,X[ i] ,Y[ i] ) ) {
return false ;
}
}
return true ;
}
}
;
// cLay varsion 20191102-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// int N, X[1000], Y[1000];
//
// class Solution {
// public:
// bool checkStraightLine(vector<vector<int>>& in) {
// N = in.size();
// rep(i,N) X[i] = in[i][0], Y[i] = in[i][1];
// rep(i,1,N) X[i] -= X[0], Y[i] -= Y[0];
// rep(i,2,N) if(crossProd(X[1],Y[1],X[i],Y[i])) return false;
// return true;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmxvbmcgbG9uZyBjcm9zc1Byb2RfTChsb25nIGxvbmcgeDEsIGxvbmcgbG9uZyB5MSwgbG9uZyBsb25nIHgyLCBsb25nIGxvbmcgeTIpewogIHJldHVybiB4MSAqIHkyIC0geDIgKiB5MTsKfQojZGVmaW5lIG1haW4gZHVtbXlfbWFpbgppbnQgbWFpbigpewogIHJldHVybiAwOwp9CiN1bmRlZiBtYWluCmludCBOOwppbnQgWFsxMDAwXTsKaW50IFlbMTAwMF07CmNsYXNzIFNvbHV0aW9uewogIHB1YmxpYzoKICBib29sIGNoZWNrU3RyYWlnaHRMaW5lKHZlY3Rvcjx2ZWN0b3I8aW50Pj4mIGluKXsKICAgIGludCBpOwogICAgTiA9IGluLnNpemUoKTsKICAgIGZvcihpPSgwKTtpPChOKTtpKyspewogICAgICBYW2ldID0gaW5baV1bMF07CiAgICAgIFlbaV0gPSBpbltpXVsxXTsKICAgIH0KICAgIGZvcihpPSgxKTtpPChOKTtpKyspewogICAgICBYW2ldIC09IFhbMF07CiAgICAgIFlbaV0gLT0gWVswXTsKICAgIH0KICAgIGZvcihpPSgyKTtpPChOKTtpKyspewogICAgICBpZihjcm9zc1Byb2RfTChYWzFdLFlbMV0sWFtpXSxZW2ldKSl7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKICB9Cn0KOwovLyBjTGF5IHZhcnNpb24gMjAxOTExMDItMQoKLy8gLS0tIG9yaWdpbmFsIGNvZGUgLS0tCi8vICNkZWZpbmUgbWFpbiBkdW1teV9tYWluCi8vIHt9Ci8vICN1bmRlZiBtYWluCi8vIAovLyBpbnQgTiwgWFsxMDAwXSwgWVsxMDAwXTsKLy8gCi8vIGNsYXNzIFNvbHV0aW9uIHsKLy8gcHVibGljOgovLyAgIGJvb2wgY2hlY2tTdHJhaWdodExpbmUodmVjdG9yPHZlY3RvcjxpbnQ+PiYgaW4pIHsKLy8gICAgIE4gPSBpbi5zaXplKCk7Ci8vICAgICByZXAoaSxOKSBYW2ldID0gaW5baV1bMF0sIFlbaV0gPSBpbltpXVsxXTsKLy8gICAgIHJlcChpLDEsTikgWFtpXSAtPSBYWzBdLCBZW2ldIC09IFlbMF07Ci8vICAgICByZXAoaSwyLE4pIGlmKGNyb3NzUHJvZChYWzFdLFlbMV0sWFtpXSxZW2ldKSkgcmV0dXJuIGZhbHNlOwovLyAgICAgcmV0dXJuIHRydWU7Ci8vICAgfQovLyB9Owo=