class Node{
public double k;
public double b;
public Node(double k, double b) {
this.k = k;
this.b = b;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Node node = (Node) o;
return Double.compare(node.k, k) == 0 && Double.compare(node.b, b) == 0;
}
@Override
public int hashCode() {
return Objects.hash(k, b);
}
}
public class SenvenB {
public static void main(String[] args){
Set<Node> set = new HashSet<>();
for(int i = 0;i < 20;i++){
for(int j = 0;j < 21;j++){
for(int r = 0;r < 20;r++){
for(int l = 0;l < 21;l++){
if(r - i == 0){
continue;
}
double k = (l-j)*1.0/(r-i);
double b = (j*r-l*i)*(1.0) / (r-i);
if(k == -0.0){
k = 0.0;
}
if(b == -0.0){
b = 0.0;
}
set.add(new Node(k,b));
}
}
}
}
System.out.println(set.size()+20);
}
}