//2013年北邮计算机 A 日期
//by ben yafang
//2018/3/20
//done
#include<stdio.h>
#include<iostream>
using namespace std;
int day[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int runday[13] = {0,31,29,31,30,31,30,31,31,30,31,30,31};
bool RunYear(int year){
if(year % 100 != 0){
if(year % 4 == 0) return true;
// else return false;
}
else{
if(year % 400 == 0) return true;
}
return false;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
char date[11];
scanf("%s",date);
int x,y,z;
int days = 0;
if(sscanf(date,"%d:%d:%d%c",&x,&y,&z)){
// cout << RunYear(x);
if(RunYear(x)){
for(int i = 1;i < y;i++){
days += runday[i];
}
days += z;
}
else{
for(int i = 1;i < y;i++){
days += day[i];
}
days += z;
}
printf("%d\n",days);
}
}
}
//2013年北邮计算机 C 中序遍历序列
//by ben yafang
//2018/3/20
//doing???二叉排序树 直接判断给定序列是否有序?
#include<stdio.h>
#include<algorithm>
using namespace std;
//struct TreeNode{
// int weight;
// TreeNode *lchild;
// TreeNode *rchild;
//}tree[401];
//int loc;
//TreeNode *create(){
// tree[loc].lchild = tree[loc].rchild = NULL;
// return &tree[loc++];
//}
//TreeNode *Insert(TreeNode *T,int x){
// if(!T){
// T = create();
// T->weight = x;
// return T;
// }
// if(!T->lchild) T->lchild = Insert(T->lchild,x);
// if(!T->rchild) T->rchild = Insert(T->rchild,x);
// return T;
//}
//bool IsSortTree(TreeNode *root){
// if(root == NULL) return true;//空二叉树
// else if(!root->lchild && !root->rchild){
// return true;
// }
// else if(root->lchild && !root->rchild){
// if(root->lchild->weight > root->weight){
// return false;
// }
// else return IsSortTree(root->lchild);
// }
// else if(root->rchild && !root->lchild){
// if(root->weight > root->rchild->weight){
// return false;
// }
// else return IsSortTree(root->rchild);
// }
// else{
// if(root->lchild->weight > root->weight || root->weight > root->rchild->weight)
// return false;
// else return (IsSortTree(root->lchild)&&IsSortTree(root->rchild));
// }
//}
//void preOrder(TreeNode *root){
// if(root->lchild) preOrder(root->lchild);
// printf("%d ",root->weight);
// if(root->rchild) preOrder(root->rchild);
//}
int main(){
int t;
scanf("%d",&t);
while(t--){
// loc = 1;//从1开始存
int n;
scanf("%d",&n);
// TreeNode *root = NULL;
int input[n];
int tmp[n];
// int x;
for(int i = 0;i < n;i++){
scanf("%d",&input[i]);
tmp[i] = input[i];
// scanf("%d",&x);
// root = Insert(root,x);//不是简单的按顺序插入,给定序列是二叉排序树的中序遍历
//有序序列就是二叉排序树的中序,无序的就不是?
}
// printf("n:%d",n);
sort(tmp,tmp+n);
// for(int i = 0;i<n;i++)printf("%d ",tmp[i]);
int flag = 0;
for(int i = 0;i <n;i++){
// printf("inp:%d tmp:%d ",input[i],tmp[i]);
if(tmp[i] != input[i]){
flag = 1;
printf("No\n");
break;
}
}
if(flag==0)printf("Yes\n");
// preOrder(root);
// if(IsSortTree(root))printf("Yes\n");
// else printf("No\n");
}
}
//2013年北邮计算机 B 统计节点个数
//by ben yafang
//2018/3/20
//done
//ac
#include<stdio.h>
struct TreeNode{
int degree;
int father;
TreeNode *lchild;
TreeNode *rchild;
}tree[1001];
int IsP(int x){
int flag = 0;//0--true
if(tree[x].lchild){
TreeNode *node = tree[x].lchild;
if(tree[x].degree < node->degree) flag = 1;
while(node->rchild!=NULL){
node = node->rchild;
if(node->degree > tree[x].degree)flag = 1;
}
}
// if(tree[x].rchild){
// if(tree[x].degree < tree[x].rchild->degree) flag = 1;
// }
if(tree[x].father != -1){
int baba = tree[x].father;
if(tree[x].degree < tree[baba].degree) flag = 1;
}
if(flag == 1)return 0;
else return 1;
}
int main(){
int t;
scanf("%d",&t);
// int output[t];
// int mem = t;
while(t--){
int n;
scanf("%d",&n);
for(int i = 0;i < n;i++){
tree[i].degree = 0;
tree[i].father = -1;
tree[i].lchild = tree[i].rchild = NULL;
}
int x,y;
int num = n;
while(--n){
scanf("%d%d",&x,&y);
tree[x].degree += 1;
tree[y].degree += 1;
tree[y].father = x;
if(!tree[x].lchild) tree[x].lchild = &tree[y];
else{
TreeNode *node = tree[x].lchild;
while(node->rchild!=NULL) node = node->rchild;
node->rchild = &tree[y];
}
}
int cnt = 0;
// printf("%d",n);
for(int i = 0;i < num;i++){
// printf("%d %d\n",tree[i].father,tree[i].degree);
if(IsP(i))cnt++;
}
// output[t] = cnt;
printf("%d\n",cnt);
}
// for(int i = mem-1; i>=0;i++){
// printf("%d",output[i]);
// if(i != 0)printf("\n");
// }
}
//北邮oj 127 最小距离查询
//by ben yafang
//2018/3/24
#include<stdio.h>
#include<string.h>
char s[100001];
int dis[100001];
int len;
int update_mindis(int index){
int front = index - 1;
int back = index + 1;
while(front>=0||back<len){
if(front >= 0 && s[index] == s[front]) return dis[index] = index-front;
if(back < len && s[index] == s[back]) return dis[index] = back-index;
front--;back++;
}
return dis[index] = -1;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%s",s);
len = strlen(s);
for(int i = 0;i < len;i++){
update_mindis(i);
// dis[i] = -1;
}
int m;
scanf("%d",&m);
while(m--){
char opera[7];
scanf("%s",opera);
// len = strlen(s);
if(!strcmp(opera,"INSERT")){
char c;
scanf(" %c",&c);
s[len] = c;//???????????????
len++;
for(int i = 0;i < len;i++){
if(s[i] == c){
update_mindis(i);
}
}
}
else{
int x;
scanf("%d",&x);
printf("%d\n",dis[x]);
}
}
}
}