import java.util.*;
class Main{
public static class Node{
public int val;
public int in;
public int out;
public ArrayList<Node> nexts;
public ArrayList<Edge> edges;
public Node(int val){
this.val=val;
in=0;
out=0;
nexts=new ArrayList<Node>();
edges=new ArrayList<Edge>();
}
}
public static class Edge{
public int weight;
public Node from;
public Node to;
public Edge(Node from,Node to,int weight){
this.weight=weight;
this.from=from;
this.to=to;
}
}
public static class Graph{
public HashMap<Integer,Node> nodes;
public HashSet<Edge> edges;
public Graph(){
nodes=new HashMap<Integer,Node>();
edges=new HashSet<Edge>();
}
}
public static void initGraph(int[][] matrix,Graph graph){
for (int i=0;i<matrix.length;i++){
int from=matrix[i][0];
int to = matrix[i][1];
int weight = matrix[i][2];
if (!graph.nodes.containsKey(from)){
graph.nodes.put(from,new Node(from));
}
if (!graph.nodes.containsKey(to)){
graph.nodes.put(to,new Node(to));
}
Node fromNode = graph.nodes.get(from);
Node toNode = graph.nodes.get(to);
Edge edge = new Edge(fromNode,toNode,weight);
fromNode.nexts.add(toNode);
fromNode.out=fromNode.out+1;
toNode.in=toNode.in+1;
fromNode.edges.add(edge);
graph.edges.add(edge);
}
}
static int res=0;
static int max=0;
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m= in.nextInt();
int s = in.nextInt();
int t = in.nextInt();
int[] savenums = new int[n];
int[][] maxtire = new int[m][3];
for (int i=0;i<n;i++){
savenums[i] = in.nextInt();
}
for (int i=0;i<m;i++){
maxtire[i][0]=in.nextInt();
maxtire[i][1]=in.nextInt();
maxtire[i][2]=in.nextInt();
}
Graph graph = new Graph();
initGraph(maxtire,graph);
Node start = graph.nodes.get(s);
Node end = graph.nodes.get(t);
dfs(start,end,0,savenums);
System.out.println(res);
System.out.println(max);
}
public static void dfs(Node now,Node end,int sum,int[] savenums){
if (now.val==end.val){
max=Math.max(max,sum+savenums[now.val]);
res=res+1;
return ;
}
if (now.nexts==null){
return;
}
for (Node next:now.nexts){
dfs(next,end,sum+savenums[next.val],savenums);
}
}
}