import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
//import java.util.Arrays;
//import java.util.Arrays;
//import java.util.HashMap;
import java.util.HashSet;
import java.util.StringTokenizer;
class LINES {
// TODO Auto-generated method stub
StringBuilder sb=new StringBuilder();
while(true){
int N
=Integer.
parseInt(br.
readLine()); if(N==0)break;
int co[][]=new int[N][2];
for(int i=0;i<N;i++){
co
[i
][0]=Integer.
parseInt(st.
nextToken()); co
[i
][1]=Integer.
parseInt(st.
nextToken());}
//int k=0;
HashSet<Double> hs=new HashSet<Double>();
for(int i=0;i<N;i++){
for(int j=i+1;j<N;j++){
double ax=(co[j][1]-co[i][1])*1.0/(co[j][0]-co[i][0]);
//System.out.println(ax);
hs.add(ax);
}
}
sb.append(hs.size()+"\n");
}
}
}
aW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7CmltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwppbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlcjsKLy9pbXBvcnQgamF2YS51dGlsLkFycmF5czsKLy9pbXBvcnQgamF2YS51dGlsLkFycmF5czsKLy9pbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CmltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKaW1wb3J0IGphdmEudXRpbC5TdHJpbmdUb2tlbml6ZXI7CgoKY2xhc3MgTElORVMgewoKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBOdW1iZXJGb3JtYXRFeGNlcHRpb24sIElPRXhjZXB0aW9uIHsKCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCkJ1ZmZlcmVkUmVhZGVyIGJyPW5ldyBCdWZmZXJlZFJlYWRlcihuZXcgSW5wdXRTdHJlYW1SZWFkZXIoU3lzdGVtLmluKSk7ClN0cmluZ0J1aWxkZXIgc2I9bmV3IFN0cmluZ0J1aWxkZXIoKTsKd2hpbGUodHJ1ZSl7CmludCBOPUludGVnZXIucGFyc2VJbnQoYnIucmVhZExpbmUoKSk7CmlmKE49PTApYnJlYWs7CmludCBjb1tdW109bmV3IGludFtOXVsyXTsKZm9yKGludCBpPTA7aTxOO2krKyl7CglTdHJpbmdUb2tlbml6ZXIgc3Q9bmV3IFN0cmluZ1Rva2VuaXplcihici5yZWFkTGluZSgpKTsKCWNvW2ldWzBdPUludGVnZXIucGFyc2VJbnQoc3QubmV4dFRva2VuKCkpOwoJY29baV1bMV09SW50ZWdlci5wYXJzZUludChzdC5uZXh0VG9rZW4oKSk7Cn0KCi8vaW50IGs9MDsKSGFzaFNldDxEb3VibGU+IGhzPW5ldyBIYXNoU2V0PERvdWJsZT4oKTsKZm9yKGludCBpPTA7aTxOO2krKyl7Cglmb3IoaW50IGo9aSsxO2o8TjtqKyspewoJCWRvdWJsZSBheD0oY29bal1bMV0tY29baV1bMV0pKjEuMC8oY29bal1bMF0tY29baV1bMF0pOwoJCS8vU3lzdGVtLm91dC5wcmludGxuKGF4KTsKCQlocy5hZGQoYXgpOwoJfQp9CnNiLmFwcGVuZChocy5zaXplKCkrIlxuIik7Cgl9CglTeXN0ZW0ub3V0LnByaW50bG4oc2IpOwoJfQoJCn0K