import std.stdio;
import std.algorithm;
import std.string;
import std.range;
import std.array;
import std.conv;
import std.complex;
import std.math;
import std.ascii;
import std.bigint;
import std.container;

class Node {
	Node[] to;
	Node[] from;
	int n;
}

void main() {
	int m = to!int(readln().strip());
	int n = to!int(readln().strip());

	auto nodes = new Node[m];
	foreach(i; 0..m) {
		nodes[i] = new Node;
		nodes[i].n = i+1;
	}
	foreach(i; 0..n) {
		auto s = map!(a => to!int(a)-1)(readln().strip().split());
		nodes[s[0]].to ~= nodes[s[1]];
		nodes[s[1]].from ~= nodes[s[0]];
	}
	Node[] S;
	foreach(node; nodes) {
		if(node.from.empty())
			S ~= node;
	}
	Node[] L;
	while(!S.empty()) {
		L ~= S.front;
		S.popFrontN(1);
		foreach(node; L.back.to) {
			node.from = remove!(a => a == L.back)(node.from);
			if(node.from.empty())
				S ~= node;
		}
	}
	foreach(node; L) {
		writeln(node.n);
	}
}