import java.io.File; import java.io.FileNotFoundException; import java.util.*; public class f_take2 { final int GRPSIZE = 1000; final static float VERTSLOPE = Float.POSITIVE_INFINITY; final static float VERTY = Float.NEGATIVE_INFINITY; @SuppressWarnings("unused") public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int p = in.nextInt(); int points[][] = new int[n][2];// 0 is x, 1 is y int needed = (int) Math.round(n * p / 100.0); for (int i = 0; i < n; i++) { points[i][0] = in.nextInt(); points[i][1] = in.nextInt(); } in.close(); long startTime = System.nanoTime(); while (System.nanoTime() - startTime < (long) 2E9) { // select a random point int index = (int) (Math.random() * n); if (fits(points, needed)) { System.out.println("possible"); return; } } System.out.println("impossible"); } static public boolean fits(int[][] points, int needed) { HashSet lines = new HashSet(); Random rand = new Random(); int ind1 = rand.nextInt(points.length); int ind2 = rand.nextInt(points.length); while (ind1 == ind2) ind2 = rand.nextInt(points.length); float compare = slope(ind1, ind2, points); int good = 0; for (int i = 0; i < points.length; i++) { float s = slope(ind1, i, points); if (s == compare) good++; else { if(s == VERTSLOPE && points[ind1][1] == points[i][1]) good++; } } //System.out.println(good); if (good >= needed) return true; return false; } static float slope(int index1, int index2, int[][] points)// slope then // yint { int x1 = points[index1][0]; int x2 = points[index2][0]; int y1 = points[index1][1]; int y2 = points[index2][1]; float dx = x1 - x2; float dy = y1 - y2; float out; if (dx == 0) { out = VERTSLOPE; } else { out = dy / dx; } return out; } }