a:6:{i:0;s:12712:"				<div class="h1"><h1>Kaziranga National Park 5 Nights / 6Days Package</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.travvelextent.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.travvelextent.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Kaziranga National Park 5 Nights / 6Days Package</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">
						5 Nights / 6 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Guwahati, Shillong, Golaghat, Cherrapunjee</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.travvelextent.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Kaziranga National Park 5 Nights / 6Days Package - 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="107236"/>
						</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_10/274422/177911.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_10/274422/177911.jpg"  width="150" height="150"    alt="Kaziranga National Park 5 Nights / 6Days Package" title="Kaziranga National Park 5 Nights / 6Days Package" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Hotel: <br />
<br />
Kaziranga - Cottage Hrishikesh or similar 	<br />
Shillong - Eee Cee or similar<br />
Cherrapunj - Coniferous Resort or similar<br />
Guwahati - Siroy Lily or similar<br />
<br />
COST BASED ON(valid for Indian National only)<br />
Twin Sharing Per Person <br />
Extra Person / Child With Bed (CWB) sharing the Room on mattress <br />
02 – 03 Pax - All Transfer & Sightseeing by 01 NON AC Indica / Wagon r / Similar <br />
04 – 06Pax - All Transfer & Sightseeing by 01 NON AC Tata Sumo / Similar <br />
Meet & Greet upon arrival at Airport / Guwahati Station<br />
1 Jeep Safari in Pobitora National Park<br />
1 Jeep Safari & 1 elephant safari in Kaziranga National Park <br />
Hotel Accommodation as per the name mentioned in the Category for duration as mentioned in the itinerary.<br />
All applicable Transfers & Sightseeing by Specified vehicle which will not be at disposal and will be exclusively used for the guest as per the itinerary onlyCost for supplementary service, optional Tours, Up-gradation Charges, Guide, Sightseeing entrance fees. <br />
Cost for Airfare, Train fare, Insurance Premiums, Rafting Charges.<br />
Cost for service provided on a personal request. <br />
Cost for personal expenses such as laundry, bottled water, soft drinks, incidentals, porter charges, tips etc.<br />
Cost for any other service not mentioned under the “Cost Includes” head.<br />
Difference in cost arising due to change in Taxes by the Government which will have to be collected directly ON ARRIVAL.<br />
Difference in cost arising due to extra usage of vehicle, other than scheduled & mentioned in the itinerary.<br />
Difference in cost arising due to mishaps, political unrest, natural calamities like - landslides, road blockage, etc. In such case extra will have to be paid on the spot by the guest directly.<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> Guwahati – Pobitora Wild life Sanctuary
								</p>
								<p class="aj">Welcome to Guwahati. Meet and be assisted by our representative at the Airport/Railway Station & proceed to Pobitora Wild life Sanctuary, it has a dense population of the Great Indian One horned rhinoceros. It is also the home of more than 2000 spices of migratory birds. Enjoy a jeep safari through the sanctuary. Proceed to Kaziranga National Park. Overnight stay in Kaziranga.</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> Kaziranga National Park
								</p>
								<p class="aj">Early morning explore any one zone of Kaziranga National Park on back of Elephant. Apart from the Rhino, other species found are Hog Deer, Swamp Deer, Wild Buffalo, Elephants and if you are lucky then tiger also. It is also home to pelicans, storks and darters as there are a number of water bodies inside the Park. Return to the resort for breakfast.After breakfast jeep safari in the central range of the park. Evening visit a Missing village and Orchid Park Overnight stay in Kaziranga.</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> Kaziranga – Shillong :
								</p>
								<p class="aj">After breakfast transfer to Shillong (4,900 ft.), called 'Scotland of the East". Enroute visit Umium Lake, a majestic placid lake with its surrounding hills. Local city tour of Shillong Check in your hotel.  Evening visit the famous Police Bazar. Overnight stay at Shillong</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> Shillong-Cherrapunjee
								</p>
								<p class="aj">After early breakfast drive to Cherrapunjee (4,400 ft.), the wettest place in the world. You will see the beautiful waterfall known as Nohkalikai, Wahkhaba falls.  You can also explore the caves known as Mawsmai, Overnight stay at Cherrapunjee.</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> Cherrapunjee - Mawlynnong - Guwahati
								</p>
								<p class="aj">After early breakfast drive to Dawki. The place Dawki is a well-known town near the Jaintia Hills of Meghalaya, as it is on the Indo-Bangladesh border. It is one of the few road borders crossing of India to Bangladesh. This pristine beauty of Meghalaya is well known for Umngot River and Dawki Bridge. It is a suspension bridge over the Umngot River and also serves as a place from where all tourists can enjoy some spectacular panoramic views and can do boating. You can also visit Indo-Bangladesh border. En-route visit Mawlynnong, (Mawlynnong –Asia’s Cleanest Village). Mawlynnong offers many interesting sights such as the living root bridge and another strange natural phenomenon of a boulder balancing on another small rock. Explore the Asia’s cleanest Village and drive to Guwahati. Drop in at your destination point in Guwahati.</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> Check-Out
								</p>
								<p class="aj">After breakfast check out of the hotel and transfer to Guwahati Railway Station/Airport for your onward journey, if time permits you can visit the Kamakhya Temple also.</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">Exclusions :</p> <ul><li>Cost for supplementary service, optional Tours, Up-gradation Charges, Guide, Sightseeing entrance fees. </li><li>
Cost for Airfare, Train fare, Insurance Premiums, Rafting Charges.</li><li>
Cost for service provided on a personal request. </li><li>
Cost for personal expenses such as laundry, bottled water, soft drinks, incidentals, porter charges, tips etc.</li><li>
Cost for any other service not mentioned under the “Cost Includes” head.</li><li>
Difference in cost arising due to change in Taxes by the Government which will have to be collected directly ON ARRIVAL.</li><li>
Difference in cost arising due to extra usage of vehicle, other than scheduled & mentioned in the itinerary.</li><li>
Difference in cost arising due to mishaps, political unrest, natural calamities like - landslides, road blockage, etc. In such case extra will have to be paid on the spot by the guest directly.</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. ~^#^~						
    	<p class="h dif xlarge b mb5px">Rate Card</p>
		<div class="dynamic-data-container">
    	<table class="bdrAll" width="100%" cellpadding="5">
			<tr>
				<td class="headHr p5px b">COST based in C.P. basis in standard package</td>
				<td class="headHr p5px b">Par person Cost</td>
			</tr>
			<tr>
				<td class="data p5px">2 Pax</td>
				<td class="data p5px">19803</td>
			</tr>
			<tr>
				<td class="data p5px">4 Pax</td>
				<td class="data p5px">14260</td>
			</tr>
			<tr>
				<td class="data p5px">6 Pax</td>
				<td class="data p5px">13040</td>
			</tr>
			<tr>
				<td class="data p5px">Extra Person</td>
				<td class="data p5px">5100</td>
			</tr>
		</table></div><br>						</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.travvelextent.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Kaziranga National Park 5 Nights / 6Days Package - 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="107236"/>
						</form>
						</div>
						
						";i:1;s:87:"Book Kaziranga National Park 5 Nights / 6Days Package - 5 Nights / 6 Days Tour Packages";i:2;s:180:"book kaziranga national park 5 nights / 6days package - 5 nights / 6 days tour packages, wildlife and nature tour packages, guwahati, shillong, golaghat, cherrapunjee tour packages";i:3;s:211:"Travvel Extent offers Kaziranga National Park 5 Nights / 6Days Package - 5 Nights / 6 Days tour package, budget Wildlife and Nature tour packages for Guwahati, Shillong, Golaghat, Cherrapunjee at exciting price.";i:4;s:2197:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Guwahati, Shillong, Golaghat, Cherrapunjee"        
		                 },
		      "description": "Hotel: 

Kaziranga - Cottage Hrishikesh or similar 	
Shillong - Eee Cee or similar
Cherrapunj - Coniferous Resort or similar
Guwahati - Siroy Lily or similar

COST BASED ON(valid for Indian National only)
Twin Sharing Per Person 
Extra Person / Child With Bed (CWB) sharing the Room on mattress 
02 – 03 Pax - All Transfer & Sightseeing by 01 NON AC Indica / Wagon r / Similar 
04 – 06Pax - All Transfer & Sightseeing by 01 NON AC Tata Sumo / Similar 
Meet & Greet upon arrival at Airport / Guwahati Station
1 Jeep Safari in Pobitora National Park
1 Jeep Safari & 1 elephant safari in Kaziranga National Park 
Hotel Accommodation as per the name mentioned in the Category for duration as mentioned in the itinerary.
All applicable Transfers & Sightseeing by Specified vehicle which will not be at disposal and will be exclusively used for the guest as per the itinerary onlyCost for supplementary service, optional Tours, Up-gradation Charges, Guide, Sightseeing entrance fees. 
Cost for Airfare, Train fare, Insurance Premiums, Rafting Charges.
Cost for service provided on a personal request. 
Cost for personal expenses such as laundry, bottled water, soft drinks, incidentals, porter charges, tips etc.
Cost for any other service not mentioned under the “Cost Includes” head.
Difference in cost arising due to change in Taxes by the Government which will have to be collected directly ON ARRIVAL.
Difference in cost arising due to extra usage of vehicle, other than scheduled & mentioned in the itinerary.
Difference in cost arising due to mishaps, political unrest, natural calamities like - landslides, road blockage, etc. In such case extra will have to be paid on the spot by the guest directly.",
		      "name": "Kaziranga National Park 5 Nights / 6Days Package",
		      "telephone": "+91-9706071620"
		    }
		    </script>
			";i:5;N;}