'BEGIN' 预期但 'USES' 找到

'BEGIN' expected but 'USES' found

您好,我已经在 freepascal 上完成了这些代码行:

type bigNum=string;
function bigMod(a:bigNum;b:longint):longint;
var i,hold:longint;
begin
hold:=0;
for i:=1 to length(a) do
    hold:=(ord(a[i])-48+hold*10)mod b;
    bigMod:=hold;
end;
uses sysutils;
var a,i,n:longint;
begin
readln(n);
a:=1;
for i:=1 to n-2 do
    a:=a*2;
IntToStr(a);
writeln(bigMod(bigMod(a,n),1000000000));
end.

但是当我 运行 它时,它说 'BEGIN' 预期但 'USES' 发现, 我该怎么做才能解决它?如果我在 'USES' 之上更改 'BEGIN' 这将是另一个错误

uses 子句必须出现在(可选的)program 语句之后,但在任何其他语句之前。将 uses 子句移动到代码的顶部,紧跟在 program 语句之后(如果确实有的话)。