a:6:{i:0;s:12684:"				<div class="h1"><h1>Mountain Biking in Sikkim Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.avorinholidays.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.avorinholidays.com/holiday-packages.htm" title="Holiday Packages">Holiday Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Mountain Biking in Sikkim Tour</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						9 Nights / 10 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Gangtok, Darjeeling</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.avorinholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Mountain Biking in Sikkim Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="103552"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_17/492587/173069.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_17/492587/173069.jpg"  width="150" height="150"    alt="Mountain Biking in Sikkim Tour" title="Mountain Biking in Sikkim Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
											<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Arrival
								</p>
								<p class="aj">On arrival at Bagdogra airport, meet our tour executive and drive towards Gangtok, the capital of Sikkim. Stop at Rangpo (Border of Sikkim & Darjeeling) for check up the documents/Passport & visa. On arrival at Gangtok, check in at your already booked hotel. Later in the evening, ride your bike nearby your hotel and get acclimatise. An overnight stay at the hotel in Gangtok.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Gangtok - Martam Village
								</p>
								<p class="aj">In the morning after breakfast, meet our guide and after briefing start your biking trip to Martam Village via Rani Khola & Rumtek Monastery. En-route, visit the Rumtek Monastery, the largest and most famous monastery in the Eastern Himalaya. It is the seat of the Kagyu-pa sect of Tibetan Buddhism founded in the 11th century. Enjoy an overnight stay in the Martam village.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Martam- Temi
								</p>
								<p class="aj">After breakfast in the morning, we will take a ride to Temi. It is a downhill ride till Sirwani Bridge. Temi is synonymous with Tea Garden, which is the sole tea estate in Sikkim. Temi Tea Garden sprawls on a moderate hill slope along the highway, covering an area of 435 acres. This garden also touches the bottom of the renowned Tendong Hill in West Sikkim district. Temi Tea Garden has made its mark in the International tea markets. The Garden produces the finest quality of tea, which is famous for its taste combined with fragrant aroma. After exploring the garden, return back to the hotel for an overnight stay.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Temi Tea Garden - Ravangla
								</p>
								<p class="aj">In the morning, one can visit the Temi Tea Garden for seeing how tea is made out of leaves. Later, start your biking tour to Ravangla. It's relaxing journey through Damthang. On the way, one can explore the Ravalang monastery. As per records, the monastery was constructed post the pilgrimage of the fourth Chogyal. After his return, the Karmapa performed the blessing. The grains that he threw from the Tsurphu Monastery in Tibet (the main seat of Karmapa) fell on the ground of Ralang and were witnessed by devotees. As such, it became the site for the Ralang Monastery. Reconstruction work was carried out in this monastery by the government between the periods of 1975 -81. This old Ralang Monastery is one of the most significant and blessed monasteries in Sikkim following the Kagyupa custom. Enjoy an overnight stay in guest house.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Ravangla - Tashiding
								</p>
								<p class="aj">After breakfast in the morning, we will start our ride towards Tashiding. Today, we will take a moderate ride that goes downward to Legship. Enjoy a night stay in the guest house.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> Tashiding - Yuksam
								</p>
								<p class="aj">In the morning, we will visit the Tashiding monastery, which is one of the most famed monasteries of the state and is situated around 40 km away from Ravangla. It was constructed in the year 1716. The annual festival of 'Bumchu' is celebrated in this monastery. On this festival, there is a custom of opening the barrel filled with holy water. The level of water seen at the opening of the barrel is an indication of the kind of year that will follow. An overnight stay at the hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 7:</b> Yuksam - Pemayangtse
								</p>
								<p class="aj">Today, after breakfast in the morning, we will start our ride towards Pemayangtse. It is a steady ascending ride to Pemayangtse that will take you to a vertical descent into Rimbi Valley. While going, you can visit the holy Khichepheri Lake that is well surrounded with picturesque gorge, thick forest, murmuring waterfalls and farm land. An overnight stay in the hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 8:</b> Pemayangtse - Darjeeling
								</p>
								<p class="aj">After breakfast in the morning, we will visit the Pemayangtse monastery. Thereafter, we will drive towards Darjeeling (Hill Queen of west Bengal). On arrival, check in at the hotel to enjoy an overnight stay.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 9:</b> Darjeeling - Tiger Hill
								</p>
								<p class="aj">Today early in the morning, we will drive to Tiger Hill to for an extraordinary experience of the first rays of the sun bathing the Himalayas. On return back to the hotel, we will visit the Ghoom Monastery. Built in 1875, this monastery follows the Gelugpa sect and houses one of the largest statue of the Maitreya Buddha-"the future Buddha". Thereafter, enjoy delicious breakfast in the hotel. After breakfast, we will drive to Darjeeling Railway Station (10 mins) and take the joyride on the famous heritage toy train till Ghoom. On arrival at Ghoom Railway station, we will transfer you to your vehicle and visit the Himalayan Zoo, which houses the Himalayan fauna like the Red Panda, black bear, yaks, tigers, snow leopard etc. in their ordinary environment, and the neighbouring Himalayan Mountaineering Institute - a premier training centre for mountaineers and a museum detailing the ascent of the Mt. Everest by Tenzing Sherpa & Sir Edmund Hillary and numerous other expeditions. Also, we will visit Tibetan Self Help Centre, a centre of training young people in the intricate art of Tibetan handicrafts and handlooms. The sales emporium is open to visitors to pick up souvenirs. Later return back to the hotel for an overnight stay.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 10:</b> : Darjeeling - Bagdogra
								</p>
								<p class="aj">After breakfast, we will drive to Bagdogra airport to catch the flight for onward destination.</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
															</ul>
						<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.avorinholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Mountain Biking in Sikkim Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="103552"/>
						</form>
						</div>
						
						";i:1;s:70:"Book Mountain Biking in Sikkim Tour - 9 Nights / 10 Days Tour Packages";i:2;s:127:"book mountain biking in sikkim tour - 9 nights / 10 days tour packages, valley tour packages, gangtok, darjeeling tour packages";i:3;s:183:"Book Mountain Biking in Sikkim Tour - 9 Nights / 10 Days tour packages from Avorin Holidays Pvt Ltd - Get attractive 9 Nights / 10 Days Valley  tour packages for  Gangtok, Darjeeling.";i:4;s:421:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Gangtok, Darjeeling"        
		                 },
		      "description": "",
		      "name": "Mountain Biking in Sikkim Tour",
		      "telephone": "+91-8855887766"
		    }
		    </script>
			";i:5;N;}